From 3717bb8cb2679e3f5283e0082454ade582346964 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 29 Jul 2020 12:11:40 -0700 Subject: [PATCH 01/46] Stubbing out golang library API --- code/go/pkg/validate.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 code/go/pkg/validate.go diff --git a/code/go/pkg/validate.go b/code/go/pkg/validate.go new file mode 100644 index 000000000..fdd5299c3 --- /dev/null +++ b/code/go/pkg/validate.go @@ -0,0 +1,15 @@ +package pkg + +import "fmt" + +// ValidationErrors is an Error that contains a iterable collection of validation error messages. +type ValidationErrors []string + +func (ve ValidationErrors) Error() string { + return fmt.Sprintf("found %v validation errors", len(ve)) +} + +// Validate validates a given package against the spec and returns any errors. +func Validate() ValidationErrors { + return nil +} \ No newline at end of file From 404b2076702476f6d235b1ec4eae6cdcb119658d Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 29 Jul 2020 12:12:42 -0700 Subject: [PATCH 02/46] Adding spec to golang lib --- .../1.0.0/dataset/fields/base.spec.yml | 0 .../1.0.0/dataset/fields/ecs.spec.yml | 0 .../1.0.0/dataset/fields/fields.spec.yml | 0 .../1.0.0/dataset/fields/package.spec.yml | 0 .../versions/1.0.0/dataset/fields/spec.yml | 27 ++ .../versions/1.0.0/dataset/manifest.spec.yml | 105 +++++++ .../spec/versions/1.0.0/dataset/spec.yml | 45 +++ .../spec/versions/1.0.0/kibana/spec.yml | 37 +++ .../spec/versions/1.0.0/manifest.spec.yml | 262 ++++++++++++++++++ .../go/resources/spec/versions/1.0.0/spec.yml | 26 ++ 10 files changed, 502 insertions(+) create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/dataset/spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/kibana/spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/manifest.spec.yml create mode 100644 code/go/resources/spec/versions/1.0.0/spec.yml diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml new file mode 100644 index 000000000..5d2eeea1a --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml @@ -0,0 +1,27 @@ +spec: +- name: base fields + description: Base fields definitions + type: file + name: "base-fields.yml" + required: true + contentMediaType: "application/x-yaml" + specRef: "base.spec.yml" +- name: dataset fields + description: Dataset-specific fields definitions + type: file + name: "fields.yml" + required: true + contentMediaType: "application/x-yaml" + specRef: "fields.spec.yml" +- name: package fields + description: Package-specific fields definitions + type: file + name: "package-fields.yml" + contentMediaType: "application/x-yaml" + specRef: "package.spec.yml" +- name: ECS fields + description: ECS fields definitions + type: file + name: "ecs.yml" + contentMediaType: "application/x-yaml" + specRef: "ecs.spec.yml" \ No newline at end of file diff --git a/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml new file mode 100644 index 000000000..fd1954f92 --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml @@ -0,0 +1,105 @@ +## +## Describes the specification for a dataset's manifest.yml file +## +spec: + # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability + type: object + properties: + title: + description: Title of dataset. + type: string + examples: + - AWS billing metrics + release: + description: Stability of dataset. + type: string + enum: + - beta + - TODO_ADD_MORE + examples: + - beta + type: + description: Type of dataset + type: string + enum: + - metrics + - TODO_ADD_MORE + examples: + - metrics + streams: + description: Streams offered by dataset. + type: array + items: + type: object + properties: + title: + type: string + examples: + - AWS Billing metrics + description: + type: string + examples: + - Collect AWS billing metrics + input: + type: string + examples: + - aws/metrics + - s3 + - file + vars: + description: Input variables. + type: array + items: + type: object + properties: + name: + description: Variable name. + type: string + examples: + - hosts + type: + description: Data type of variable. + type: string + enum: + - text + - TODO_ADD_MORE + examples: + - text + title: + description: Title of variable + type: string + examples: + - Hosts + multi: + description: TODO + type: boolean + default: false + examples: + - true + required: + description: Is variable required? + type: boolean + default: false + examples: + - true + show_user: + description: TODO + type: boolean + default: true + examples: + - false + default: + description: Default value(s) for variable + type: array + items: + type: string + examples: + - "http://127.0.0.1" + required: + - name + - type + required: + - title + - description + required: + - title diff --git a/code/go/resources/spec/versions/1.0.0/dataset/spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/spec.yml new file mode 100644 index 000000000..1914bb899 --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/dataset/spec.yml @@ -0,0 +1,45 @@ +spec: +- description: Folder containing a single dataset definition + type: folder + pattern: "[a-z0-9][a-z0-9_]+[a-z0-9]" + minOccurences: 1 + spec: + - description: A dataset's manifest file + type: file + contentMediaType: "application/x-yaml" + name: "manifest.yml" + required: true + specRef: "manifest.spec.yml" + - description: Folder containing field definitions + type: folder + name: fields + required: true + specRef: "fields/spec.yml" + - description: Folder containing agent-related definitions + type: folder + name: agent + required: true + spec: + - description: Folder containing agent stream definitions + type: folder + name: stream + required: true + spec: + - description: Agent stream definition + type: file + name: "stream.yml.hbs" + contentMediaType: "application/x-hbs" + required: true + - description: Folder containing Elasticsearch assets + type: folder + name: elasticsearch + spec: + - description: Folder containing Elasticsearch Ingest Node pipeline definitions + type: folder + name: ingest_pipeline + spec: + - description: Default ingest pipeline definition + type: file + name: "default.yml" + contentMediaType: "application/x-yaml" + required: true diff --git a/code/go/resources/spec/versions/1.0.0/kibana/spec.yml b/code/go/resources/spec/versions/1.0.0/kibana/spec.yml new file mode 100644 index 000000000..4cbd3a45a --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/kibana/spec.yml @@ -0,0 +1,37 @@ + spec: + - description: Folder containing Kibana dashboard assets + type: folder + name: dashboard + required: false + spec: + - description: A dashboard asset file + type: file + contentMediaType: "application/json" + pattern: ".+\.json" + - description: Folder containing Kibana visualization assets + type: folder + name: visualization + required: false + spec: + - description: A visualization asset file + type: file + contentMediaType: "application/json" + pattern: ".+\.json" + - description: Folder containing Kibana saved search assets + type: folder + name: search + required: false + spec: + - description: A saved search asset file + type: file + contentMediaType: "application/json" + pattern: ".+\.json" + - description: Folder containing Kibana map assets + type: folder + name: map + required: false + spec: + - description: A map asset file + type: file + contentMediaType: "application/json" + pattern: ".+\.json" \ No newline at end of file diff --git a/code/go/resources/spec/versions/1.0.0/manifest.spec.yml b/code/go/resources/spec/versions/1.0.0/manifest.spec.yml new file mode 100644 index 000000000..10f300290 --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/manifest.spec.yml @@ -0,0 +1,262 @@ +## +## Describes the specification for the package's main manifest.yml file +## +spec: + # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability + type: object + properties: + format_version: + description: The version of the package specification format used by this package. + type: string + pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + examples: + - "1.0.0" + name: + description: The name of the package. + type: string + examples: + - apache + title: + description: The title of the package. + type: string + examples: + - Apache + description: + description: A longer description of the package. + type: string + examples: + - Apache Integration + version: + description: The version of the package. + type: string + pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + examples: + - "0.1.0" + license: + description: The license under which the package is being released. + type: string + enum: + - apache2 + - basic + - gold + - platinum + default: basic + examples: + - basic + type: + description: The type of package. + type: string + enum: + - integration + - solution + examples: + - integration + release: + description: The stability of the package. + type: string + enum: + - experimental + - beta + - ga + examples: + - experimental + categories: + description: Categories to which this package belongs. + type: array + items: + type: string + enum: + - security + - web + - TODO_ADD_MORE + examples: + - web + conditions: + description: Constraints under which this package can be installed. + type: object + properties: + kibana: + description: Kibana versions compatible with this package. + type: object + properties: + version: + type: string + examples: + - ">=7.9.0" + icons: + description: List of icons for by this package. + type: array + items: + type: object + properties: + src: + description: Relative path to the icon's image file. + type: string + examples: + - "/img/logo_apache.svg" + title: + description: Title of icon. + type: string + examples: + - "Apache Logo" + size: + description: Size of the icon. + type: string + examples: + - "32x32" + type: + description: MIME type of the icon image file. + type: string + examples: + - "image/svg+xml" + required: + - src + screenshots: + description: List of screenshots of Kibana assets created by this package. + type: array + items: + type: object + properties: + src: + description: Relative path to the scrennshot's image file. + type: string + examples: + - "/img/apache_httpd_server_status.png" + title: + description: Title of screenshot. + type: string + examples: + - "Apache HTTPD Server Status" + size: + description: Size of the screenshot. + type: string + examples: + - "1215x1199" + type: + description: MIME type of the screenshot image file. + type: string + examples: + - "image/png" + required: + - src + - title + removable: + description: Is this package removable form the package registry? + type: boolean + config_templates: + description: List of configuration templates offered by this package. + type: array + items: + type: object + properties: + name: + description: Name of configuration template. + type: string + examples: + - apache + title: + description: Title of configuration template. + type: string + examples: + - Apache logs and metrics + description: + description: Longer description of configuration template. + type: string + examples: + - Collect logs and metrics from Apache instances + multiple: + type: boolean + solution: + type: string + inputs: + description: List of inputs supported by configuration template. + type: array + items: + type: object + properties: + type: + description: Type of input. + type: string + title: + description: Title of input. + type: string + examples: + - Collect logs from Apache instances + description: + description: Longer description of input. + type: string + examples: + - Collecting Apache access and error logs + vars: + description: Input configuration variables. + type: array + items: + type: object + properties: + name: + description: Variable name. + type: string + examples: + - hosts + type: + description: Data type of variable. + type: string + enum: + - text + - TODO_ADD_MORE + examples: + - text + title: + description: Title of variable + type: string + examples: + - Hosts + multi: + description: TODO + type: boolean + default: false + examples: + - true + required: + description: Is variable required? + type: boolean + default: false + examples: + - true + show_user: + description: TODO + type: boolean + default: true + examples: + - false + default: + description: Default value(s) for variable + type: array + items: + type: string + examples: + - "http://127.0.0.1" + required: + - name + - type + required: + - type + - title + - description + required: + - name + - title + - description + owner: + type: object + properties: + github: + description: GitHub repository name of package maintainer. + type: string + required: + - format_version + - name + - title + - description + - version + - release \ No newline at end of file diff --git a/code/go/resources/spec/versions/1.0.0/spec.yml b/code/go/resources/spec/versions/1.0.0/spec.yml new file mode 100644 index 000000000..abda0af95 --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/spec.yml @@ -0,0 +1,26 @@ +## +## Entrypoint of package specification. +## +## Describes the folders and files that make up a package. +## +spec: +- description: The main package manifest file + type: file + contentMediaType: "application/x-yaml" + name: "manifest.yml" + required: true + specRef: "manifest.spec.yml" +- description: Folder containing dataset definitions + type: folder + name: dataset + required: true + specRef: "dataset/spec.yml" +- description: Folder containing documentation for the package + type: folder + name: docs + required: true +- description: Folder containing Kibana assets used by the package + type: folder + name: kibana + required: false + specRef: "kibana/spec.yml" \ No newline at end of file From 6964040020dc60b02097306f54d3067161395d75 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 29 Jul 2020 13:04:32 -0700 Subject: [PATCH 03/46] Creating stub code in internal/ --- code/go/internal/epkg/errors.go | 11 +++++++++++ code/go/internal/epkg/package.go | 14 ++++++++++++++ code/go/pkg/validate.go | 19 +++++++++++-------- 3 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 code/go/internal/epkg/errors.go create mode 100644 code/go/internal/epkg/package.go diff --git a/code/go/internal/epkg/errors.go b/code/go/internal/epkg/errors.go new file mode 100644 index 000000000..c2c69742a --- /dev/null +++ b/code/go/internal/epkg/errors.go @@ -0,0 +1,11 @@ +package epkg + +import "fmt" + +// ValidationErrors is an Error that contains a iterable collection of validation error messages. +type ValidationErrors []string + +func (ve ValidationErrors) Error() string { + return fmt.Sprintf("found %v validation errors", len(ve)) +} + diff --git a/code/go/internal/epkg/package.go b/code/go/internal/epkg/package.go new file mode 100644 index 000000000..d634c8946 --- /dev/null +++ b/code/go/internal/epkg/package.go @@ -0,0 +1,14 @@ +package epkg + +type Package struct { + FormatVersion string `yaml:format_version` +} + +func NewFromPath(pkgRootPath string) (*Package, error) { + // Load package's manifest file and parse version + // Instantiate Package object and return it +} + +func (p Package) Validate() ValidationErrors { + return nil +} \ No newline at end of file diff --git a/code/go/pkg/validate.go b/code/go/pkg/validate.go index fdd5299c3..9eb2ed5df 100644 --- a/code/go/pkg/validate.go +++ b/code/go/pkg/validate.go @@ -1,15 +1,18 @@ package pkg -import "fmt" +import ( + "../internal/epkg" +) // ValidationErrors is an Error that contains a iterable collection of validation error messages. -type ValidationErrors []string - -func (ve ValidationErrors) Error() string { - return fmt.Sprintf("found %v validation errors", len(ve)) -} +type ValidationErrors epkg.ValidationErrors // Validate validates a given package against the spec and returns any errors. -func Validate() ValidationErrors { - return nil +func Validate(packageRootPath string) error { + p, err := epkg.NewFromPath(packageRootPath) + if err != nil { + return err + } + + return p.Validate() } \ No newline at end of file From b64265d33fac6907c9f3f5ec67f1f0af7ed9d82b Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 29 Jul 2020 17:17:37 -0700 Subject: [PATCH 04/46] Fleshing out --- code/go/internal/epkg/errors.go | 11 ----------- code/go/internal/epkg/package.go | 14 -------------- code/go/internal/validator/package.go | 19 +++++++++++++++++++ code/go/internal/validator/spec.go | 18 ++++++++++++++++++ code/go/pkg/validate.go | 18 ------------------ code/go/pkg/validator/errors.go | 8 ++++++++ code/go/pkg/validator/validator.go | 14 +++++++++++--- 7 files changed, 56 insertions(+), 46 deletions(-) delete mode 100644 code/go/internal/epkg/errors.go delete mode 100644 code/go/internal/epkg/package.go create mode 100644 code/go/internal/validator/package.go create mode 100644 code/go/internal/validator/spec.go delete mode 100644 code/go/pkg/validate.go create mode 100644 code/go/pkg/validator/errors.go diff --git a/code/go/internal/epkg/errors.go b/code/go/internal/epkg/errors.go deleted file mode 100644 index c2c69742a..000000000 --- a/code/go/internal/epkg/errors.go +++ /dev/null @@ -1,11 +0,0 @@ -package epkg - -import "fmt" - -// ValidationErrors is an Error that contains a iterable collection of validation error messages. -type ValidationErrors []string - -func (ve ValidationErrors) Error() string { - return fmt.Sprintf("found %v validation errors", len(ve)) -} - diff --git a/code/go/internal/epkg/package.go b/code/go/internal/epkg/package.go deleted file mode 100644 index d634c8946..000000000 --- a/code/go/internal/epkg/package.go +++ /dev/null @@ -1,14 +0,0 @@ -package epkg - -type Package struct { - FormatVersion string `yaml:format_version` -} - -func NewFromPath(pkgRootPath string) (*Package, error) { - // Load package's manifest file and parse version - // Instantiate Package object and return it -} - -func (p Package) Validate() ValidationErrors { - return nil -} \ No newline at end of file diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go new file mode 100644 index 000000000..5e3e40abe --- /dev/null +++ b/code/go/internal/validator/package.go @@ -0,0 +1,19 @@ +package validator + +type Package struct { + SpecVersion string + RootPath string +} + +func NewPackage(pkgRootPath string) (*Package, error) { + // Load package's manifest file and parse spec version + specVersion := "1.0.0" + + // Instantiate Package object and return it + p := Package{ + specVersion, + pkgRootPath, + } + + return &p, nil +} \ No newline at end of file diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go new file mode 100644 index 000000000..f167ea019 --- /dev/null +++ b/code/go/internal/validator/spec.go @@ -0,0 +1,18 @@ +package validator + +type Spec struct { + version string +} + +func NewSpec(version string) (*Spec, error) { + // Find spec for given format version + s := Spec{ + version, + } + + return &s, nil +} + +func (s Spec) ValidatePackage(pkg Package) ValidationErrors { + return nil +} \ No newline at end of file diff --git a/code/go/pkg/validate.go b/code/go/pkg/validate.go deleted file mode 100644 index 9eb2ed5df..000000000 --- a/code/go/pkg/validate.go +++ /dev/null @@ -1,18 +0,0 @@ -package pkg - -import ( - "../internal/epkg" -) - -// ValidationErrors is an Error that contains a iterable collection of validation error messages. -type ValidationErrors epkg.ValidationErrors - -// Validate validates a given package against the spec and returns any errors. -func Validate(packageRootPath string) error { - p, err := epkg.NewFromPath(packageRootPath) - if err != nil { - return err - } - - return p.Validate() -} \ No newline at end of file diff --git a/code/go/pkg/validator/errors.go b/code/go/pkg/validator/errors.go new file mode 100644 index 000000000..0a0712593 --- /dev/null +++ b/code/go/pkg/validator/errors.go @@ -0,0 +1,8 @@ +package validator + +import ( + "github.com/elastic/package-spec/code/go/internal/validator" +) +// ValidationErrors is an Error that contains a iterable collection of validation error messages. +type ValidationErrors validator.ValidationErrors + diff --git a/code/go/pkg/validator/validator.go b/code/go/pkg/validator/validator.go index 00e09ab87..5cf884d9c 100644 --- a/code/go/pkg/validator/validator.go +++ b/code/go/pkg/validator/validator.go @@ -7,7 +7,15 @@ import ( // ValidateFromPath validates a package located at the given path against the // appropriate specification and returns any errors. func ValidateFromPath(packageRootPath string) error { - // TODO: Noop for now. Implement actual validation. - var errs validator.ValidationErrors - return errs + p, err := validator.NewPackage(packageRootPath) + if err != nil { + return err + } + + s, err := validator.NewSpec(p.SpecVersion) + if err != nil { + return err + } + + return s.ValidatePackage(*p) } From b6dd885885a427d8c3ef6f884494520cf4614d42 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 06:45:24 -0700 Subject: [PATCH 05/46] Adding validation error tests --- code/go/internal/validator/package.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 5e3e40abe..84887bba2 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -2,12 +2,15 @@ package validator type Package struct { SpecVersion string - RootPath string + RootPath string } func NewPackage(pkgRootPath string) (*Package, error) { + // TODO: Check that package root path exists and is a folder + // TODO: Check that package root path contains manifest file + // Load package's manifest file and parse spec version - specVersion := "1.0.0" + specVersion := "1.0.0" // TODO: read from manifest // Instantiate Package object and return it p := Package{ @@ -16,4 +19,4 @@ func NewPackage(pkgRootPath string) (*Package, error) { } return &p, nil -} \ No newline at end of file +} From 82dd323f32eb1a1eb699be3dce4fddeb9f943515 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 12:20:31 -0700 Subject: [PATCH 06/46] Updating API --- code/go/pkg/validator/validator.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/go/pkg/validator/validator.go b/code/go/pkg/validator/validator.go index 5cf884d9c..2b9313ee1 100644 --- a/code/go/pkg/validator/validator.go +++ b/code/go/pkg/validator/validator.go @@ -7,15 +7,15 @@ import ( // ValidateFromPath validates a package located at the given path against the // appropriate specification and returns any errors. func ValidateFromPath(packageRootPath string) error { - p, err := validator.NewPackage(packageRootPath) + pkg, err := validator.NewPackage(packageRootPath) if err != nil { return err } - s, err := validator.NewSpec(p.SpecVersion) + spec, err := validator.NewSpec(pkg.SpecVersion) if err != nil { return err } - return s.ValidatePackage(*p) + return spec.ValidatePackage(*pkg) } From 0fae987bc82382e53de38983f8ca4b44769e1aad Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 12:24:52 -0700 Subject: [PATCH 07/46] Updating README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15d801a6a..b224b4683 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This repository contains: Please use this repository to discuss any changes to the specification, either my making issues or PRs to the specification. -# Specification Format +# Specification Format An Elastic Package specification describes: 1. the folder structure of packages and expected files within these folders; and From 4e131e89afb0d468aedf341c711049a4e68f75ca Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 12:34:13 -0700 Subject: [PATCH 08/46] Minor linting --- code/go/internal/validator/spec.go | 2 +- code/go/pkg/validator/errors.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index f167ea019..839e56579 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -15,4 +15,4 @@ func NewSpec(version string) (*Spec, error) { func (s Spec) ValidatePackage(pkg Package) ValidationErrors { return nil -} \ No newline at end of file +} diff --git a/code/go/pkg/validator/errors.go b/code/go/pkg/validator/errors.go index 0a0712593..20fbf0d75 100644 --- a/code/go/pkg/validator/errors.go +++ b/code/go/pkg/validator/errors.go @@ -3,6 +3,6 @@ package validator import ( "github.com/elastic/package-spec/code/go/internal/validator" ) + // ValidationErrors is an Error that contains a iterable collection of validation error messages. type ValidationErrors validator.ValidationErrors - From aeabbd5e487d984f3dfb58c9d3891c2e61891010 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 12:52:36 -0700 Subject: [PATCH 09/46] Add recipe --- code/go/internal/validator/spec.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 839e56579..9199757f9 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -14,5 +14,13 @@ func NewSpec(version string) (*Spec, error) { } func (s Spec) ValidatePackage(pkg Package) ValidationErrors { + // Stitch together specification YAML files into mega YAML specification + // Convert mega YAML non-JSON schema parts to JSON schema equivalents + // Convert mega YAML specification into mega JSON object (so we have a valid JSON schema) + // Stitch together package contents into mega JSON object + // Validate mega JSON object representing package against mega JSON schema + // Parse validation errors and make them friendlier so they make sense in the context of packages + // Perform additional non-trivial semantic validations + // Return validation errors return nil } From cbdd93501af7d2cc12a7de095745e852df16f733 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 15:32:02 -0700 Subject: [PATCH 10/46] Add test target to Makefile --- code/go/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/go/Makefile b/code/go/Makefile index c83c39047..a28801e08 100644 --- a/code/go/Makefile +++ b/code/go/Makefile @@ -15,4 +15,4 @@ check: # Runs tests test: - @go test -v ./... + @go test -v ./... \ No newline at end of file From d7dcc6edcf8d8e5ad4d8e3b9cec58470fc48b962 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 16:00:47 -0700 Subject: [PATCH 11/46] Adding package tests --- code/go/go.sum | 2 + code/go/internal/validator/package.go | 46 ++++++++++++++-- code/go/internal/validator/package_test.go | 53 +++++++++++++++++++ .../test/packages/bad_manifest/manifest.yml | 2 + .../validator/test/packages/good/manifest.yml | 1 + .../validator/test/packages/no_manifest/.keep | 0 6 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 code/go/internal/validator/package_test.go create mode 100644 code/go/internal/validator/test/packages/bad_manifest/manifest.yml create mode 100644 code/go/internal/validator/test/packages/good/manifest.yml create mode 100644 code/go/internal/validator/test/packages/no_manifest/.keep diff --git a/code/go/go.sum b/code/go/go.sum index 59a7d7a81..4c5b4d674 100644 --- a/code/go/go.sum +++ b/code/go/go.sum @@ -1,5 +1,7 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 84887bba2..6439179f2 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -1,20 +1,56 @@ package validator +import ( + "fmt" + "io/ioutil" + "os" + "path" + + "gopkg.in/yaml.v3" + + "github.com/pkg/errors" +) + type Package struct { SpecVersion string RootPath string } func NewPackage(pkgRootPath string) (*Package, error) { - // TODO: Check that package root path exists and is a folder - // TODO: Check that package root path contains manifest file + info, err := os.Stat(pkgRootPath) + if os.IsNotExist(err) { + return nil, errors.Wrapf(err, "no package found at path [%v]", pkgRootPath) + } + + if !info.IsDir() { + return nil, fmt.Errorf("no package folder found at path [%v]", pkgRootPath) + } + + pkgManifestPath := path.Join(pkgRootPath, "manifest.yml") + info, err = os.Stat(pkgManifestPath) + if os.IsNotExist(err) { + return nil, errors.Wrapf(err, "no package manifest file found at path [%v]", pkgManifestPath) + } + + data, err := ioutil.ReadFile(pkgManifestPath) + if err != nil { + return nil, fmt.Errorf("could not read package manifest file [%v]", pkgManifestPath) + } - // Load package's manifest file and parse spec version - specVersion := "1.0.0" // TODO: read from manifest + var manifest struct { + SpecVersion string `yaml:"format_version"` + } + if err := yaml.Unmarshal(data, &manifest); err != nil { + return nil, errors.Wrapf(err, "could not parse package manifest file [%v]", pkgManifestPath) + } + + if manifest.SpecVersion == "" { + return nil, fmt.Errorf("could not read specification version from package manifest file [%v]", pkgManifestPath) + } // Instantiate Package object and return it p := Package{ - specVersion, + manifest.SpecVersion, pkgRootPath, } diff --git a/code/go/internal/validator/package_test.go b/code/go/internal/validator/package_test.go new file mode 100644 index 000000000..9f174e972 --- /dev/null +++ b/code/go/internal/validator/package_test.go @@ -0,0 +1,53 @@ +package validator + +import ( + "os" + "path" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewPackageGood(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + + pkgRootPath := path.Join(cwd, "test", "packages", "good") + pkg, err := NewPackage(pkgRootPath) + require.NoError(t, err) + require.Equal(t, "1.0.4", pkg.SpecVersion) + require.Equal(t, pkgRootPath, pkg.RootPath) +} + +func TestNewPackageNonExistent(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + + pkgRootPath := path.Join(cwd, "test", "packages", "nonexistent") + pkg, err := NewPackage(pkgRootPath) + require.Error(t, err) + require.Contains(t, err.Error(), "no package found at") + require.Nil(t, pkg) +} + +func TestNewPackageNoManifest(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + + pkgRootPath := path.Join(cwd, "test", "packages", "no_manifest") + pkg, err := NewPackage(pkgRootPath) + require.Error(t, err) + require.Contains(t, err.Error(), "no package manifest file found at") + require.Nil(t, pkg) +} + +func TestNewPackageBadManifest(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + + pkgRootPath := path.Join(cwd, "test", "packages", "bad_manifest") + pkg, err := NewPackage(pkgRootPath) + require.Error(t, err) + require.Contains(t, err.Error(), "could not read specification version") + require.Nil(t, pkg) +} diff --git a/code/go/internal/validator/test/packages/bad_manifest/manifest.yml b/code/go/internal/validator/test/packages/bad_manifest/manifest.yml new file mode 100644 index 000000000..b20212f0e --- /dev/null +++ b/code/go/internal/validator/test/packages/bad_manifest/manifest.yml @@ -0,0 +1,2 @@ +# no format_version in this file +name: mypackage \ No newline at end of file diff --git a/code/go/internal/validator/test/packages/good/manifest.yml b/code/go/internal/validator/test/packages/good/manifest.yml new file mode 100644 index 000000000..24ed53d91 --- /dev/null +++ b/code/go/internal/validator/test/packages/good/manifest.yml @@ -0,0 +1 @@ +format_version: 1.0.4 \ No newline at end of file diff --git a/code/go/internal/validator/test/packages/no_manifest/.keep b/code/go/internal/validator/test/packages/no_manifest/.keep new file mode 100644 index 000000000..e69de29bb From 22e411e995eab4a381a54c2291b0a63a6bf9b7fd Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 18:00:03 -0700 Subject: [PATCH 12/46] Consolidating tests --- code/go/internal/validator/package_test.go | 69 +++++++++---------- .../manifest.yml | 0 2 files changed, 31 insertions(+), 38 deletions(-) rename code/go/internal/validator/test/packages/{bad_manifest => no_spec_version}/manifest.yml (100%) diff --git a/code/go/internal/validator/package_test.go b/code/go/internal/validator/package_test.go index 9f174e972..45fd6c229 100644 --- a/code/go/internal/validator/package_test.go +++ b/code/go/internal/validator/package_test.go @@ -8,46 +8,39 @@ import ( "github.com/stretchr/testify/require" ) -func TestNewPackageGood(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - pkgRootPath := path.Join(cwd, "test", "packages", "good") - pkg, err := NewPackage(pkgRootPath) - require.NoError(t, err) - require.Equal(t, "1.0.4", pkg.SpecVersion) - require.Equal(t, pkgRootPath, pkg.RootPath) -} - -func TestNewPackageNonExistent(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - pkgRootPath := path.Join(cwd, "test", "packages", "nonexistent") - pkg, err := NewPackage(pkgRootPath) - require.Error(t, err) - require.Contains(t, err.Error(), "no package found at") - require.Nil(t, pkg) -} - -func TestNewPackageNoManifest(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - pkgRootPath := path.Join(cwd, "test", "packages", "no_manifest") - pkg, err := NewPackage(pkgRootPath) - require.Error(t, err) - require.Contains(t, err.Error(), "no package manifest file found at") - require.Nil(t, pkg) -} +func TestNewPackage(t *testing.T) { + tests := map[string]struct { + expectedErrContains string + expectedSpecVersion string + }{ + "good": { + expectedSpecVersion: "1.0.4", + }, + "non_existent": { + expectedErrContains: "no package found at", + }, + "no_manifest": { + expectedErrContains: "no package manifest file found at", + }, + "no_spec_version": { + expectedErrContains: "could not read specification version", + }, + } -func TestNewPackageBadManifest(t *testing.T) { cwd, err := os.Getwd() require.NoError(t, err) - pkgRootPath := path.Join(cwd, "test", "packages", "bad_manifest") - pkg, err := NewPackage(pkgRootPath) - require.Error(t, err) - require.Contains(t, err.Error(), "could not read specification version") - require.Nil(t, pkg) + for pkgName, test := range tests { + pkgRootPath := path.Join(cwd, "test", "packages", pkgName) + pkg, err := NewPackage(pkgRootPath) + if test.expectedErrContains == "" { + require.NoError(t, err) + require.Equal(t, test.expectedSpecVersion, pkg.SpecVersion) + require.Equal(t, pkgRootPath, pkg.RootPath) + } else { + require.Error(t, err) + require.Contains(t, err.Error(), test.expectedErrContains) + require.Nil(t, pkg) + } + } } diff --git a/code/go/internal/validator/test/packages/bad_manifest/manifest.yml b/code/go/internal/validator/test/packages/no_spec_version/manifest.yml similarity index 100% rename from code/go/internal/validator/test/packages/bad_manifest/manifest.yml rename to code/go/internal/validator/test/packages/no_spec_version/manifest.yml From bf0d2a6c6d5e62156d86c41c6daf6ba73afa6ec6 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 18:14:35 -0700 Subject: [PATCH 13/46] Adding spec tests --- code/go/internal/validator/package_test.go | 6 +---- code/go/internal/validator/spec.go | 19 +++++++++++++- code/go/internal/validator/spec_test.go | 30 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 code/go/internal/validator/spec_test.go diff --git a/code/go/internal/validator/package_test.go b/code/go/internal/validator/package_test.go index 45fd6c229..cf893967b 100644 --- a/code/go/internal/validator/package_test.go +++ b/code/go/internal/validator/package_test.go @@ -1,7 +1,6 @@ package validator import ( - "os" "path" "testing" @@ -27,11 +26,8 @@ func TestNewPackage(t *testing.T) { }, } - cwd, err := os.Getwd() - require.NoError(t, err) - for pkgName, test := range tests { - pkgRootPath := path.Join(cwd, "test", "packages", pkgName) + pkgRootPath := path.Join("test", "packages", pkgName) pkg, err := NewPackage(pkgRootPath) if test.expectedErrContains == "" { require.NoError(t, err) diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 9199757f9..4e575e683 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -1,11 +1,28 @@ package validator +import ( + "fmt" + "os" + "path" + + "github.com/pkg/errors" +) + type Spec struct { version string } func NewSpec(version string) (*Spec, error) { - // Find spec for given format version + specPath := path.Join("..", "..", "resources", "spec", "versions", version) + info, err := os.Stat(specPath) + if os.IsNotExist(err) { + return nil, errors.Wrapf(err, "no specification found for version [%v]", version) + } + + if !info.IsDir() { + return nil, fmt.Errorf("no valid specification found for version [%v]", version) + } + s := Spec{ version, } diff --git a/code/go/internal/validator/spec_test.go b/code/go/internal/validator/spec_test.go new file mode 100644 index 000000000..a4b06dfe6 --- /dev/null +++ b/code/go/internal/validator/spec_test.go @@ -0,0 +1,30 @@ +package validator + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewSpec(t *testing.T) { + tests := map[string]struct { + expectedErrContains string + }{ + "1.0.0": {}, + "non_existent": { + "no specification found for version [non_existent]", + }, + } + + for version, test := range tests { + spec, err := NewSpec(version) + if test.expectedErrContains == "" { + require.NoError(t, err) + require.IsType(t, &Spec{}, spec) + } else { + require.Error(t, err) + require.Contains(t, err.Error(), test.expectedErrContains) + require.Nil(t, spec) + } + } +} From 0772b13b923b22eac9f80335a5f32185d9cf74af Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 21:34:42 -0700 Subject: [PATCH 14/46] Fleshing out validation logic a bit --- code/go/go.mod | 2 ++ code/go/go.sum | 8 +++++ code/go/internal/validator/package.go | 5 +++ code/go/internal/validator/spec.go | 44 +++++++++++++++++++++++---- 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/code/go/go.mod b/code/go/go.mod index e7f73cd7c..b109154f5 100644 --- a/code/go/go.mod +++ b/code/go/go.mod @@ -5,4 +5,6 @@ go 1.14 require ( github.com/rakyll/statik v0.1.7 github.com/stretchr/testify v1.6.1 + github.com/xeipuuv/gojsonschema v1.2.0 + gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c ) diff --git a/code/go/go.sum b/code/go/go.sum index 4c5b4d674..847256a61 100644 --- a/code/go/go.sum +++ b/code/go/go.sum @@ -1,5 +1,6 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/elastic/package-spec v0.0.0-20200730114229-e0bfe6557ccf h1:3HWOnyw54OaM75pP8XTitrXFsBav59JIypBc486BM8I= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -7,8 +8,15 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 6439179f2..286bee0eb 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -56,3 +56,8 @@ func NewPackage(pkgRootPath string) (*Package, error) { return &p, nil } + +func (p Package) ToJson() (string, error) { + // Stitch together package contents into mega JSON object + return "", nil +} diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 4e575e683..cb8d3378d 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -6,6 +6,7 @@ import ( "path" "github.com/pkg/errors" + "github.com/xeipuuv/gojsonschema" ) type Spec struct { @@ -31,13 +32,44 @@ func NewSpec(version string) (*Spec, error) { } func (s Spec) ValidatePackage(pkg Package) ValidationErrors { - // Stitch together specification YAML files into mega YAML specification - // Convert mega YAML non-JSON schema parts to JSON schema equivalents - // Convert mega YAML specification into mega JSON object (so we have a valid JSON schema) - // Stitch together package contents into mega JSON object + var errs ValidationErrors + + specJsonSchema, err := s.toJsonSchema() + if err != nil { + errs = append(errs, errors.Wrap(err, "could not convert specification to JSON schema")) + return errs + } + + packageJson, err := pkg.ToJson() + if err != nil { + errs = append(errs, errors.Wrap(err, "could not convert package contents to JSON")) + return errs + } + // Validate mega JSON object representing package against mega JSON schema + schemaLoader := gojsonschema.NewStringLoader(specJsonSchema) + documentLoader := gojsonschema.NewStringLoader(packageJson) + validationResult, err := gojsonschema.Validate(schemaLoader, documentLoader) + // Parse validation errors and make them friendlier so they make sense in the context of packages - // Perform additional non-trivial semantic validations + if !validationResult.Valid() { + for _, err := range validationResult.Errors() { + // TODO: translate to friendlier errors before appending + errs = append(errs, errors.New(err.String())) + } + + return errs + } + + // TODO: Perform additional non-trivial semantic validations + // Return validation errors - return nil + return errs +} + +func (s Spec) toJsonSchema() (string, error) { + // Stitch together specification YAML files into mega YAML specification + // Convert mega YAML non-JSON schema parts to JSON schema equivalents + // Convert mega YAML specification into mega JSON object (so we have a valid JSON schema) + return "", nil } From 54d7bc7db5bb2eb89549cc081a8dd027defdc317 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 21:34:54 -0700 Subject: [PATCH 15/46] Running go mod tidy --- code/go/go.sum | 1 - 1 file changed, 1 deletion(-) diff --git a/code/go/go.sum b/code/go/go.sum index 847256a61..65b266313 100644 --- a/code/go/go.sum +++ b/code/go/go.sum @@ -1,6 +1,5 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/elastic/package-spec v0.0.0-20200730114229-e0bfe6557ccf h1:3HWOnyw54OaM75pP8XTitrXFsBav59JIypBc486BM8I= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= From 31a3a3f2c830fe3a37b4bfdba1ee533c97341438 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 21:35:56 -0700 Subject: [PATCH 16/46] Adding TODOs --- code/go/internal/validator/package.go | 2 ++ code/go/internal/validator/spec.go | 1 + 2 files changed, 3 insertions(+) diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 286bee0eb..2d293193d 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -57,7 +57,9 @@ func NewPackage(pkgRootPath string) (*Package, error) { return &p, nil } +// ToJson returns the package as a JSON document func (p Package) ToJson() (string, error) { + // TODO // Stitch together package contents into mega JSON object return "", nil } diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index cb8d3378d..4107469d5 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -68,6 +68,7 @@ func (s Spec) ValidatePackage(pkg Package) ValidationErrors { } func (s Spec) toJsonSchema() (string, error) { + // TODO // Stitch together specification YAML files into mega YAML specification // Convert mega YAML non-JSON schema parts to JSON schema equivalents // Convert mega YAML specification into mega JSON object (so we have a valid JSON schema) From 00676ee607e1c111cb35a1b90aa0a509fa430971 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 30 Jul 2020 21:47:17 -0700 Subject: [PATCH 17/46] Updating bundled specs --- .../spec/versions/1.0.0/changelog.spec.yml | 46 +++++++++++++++++++ .../1.0.0/dataset/fields/base.spec.yml | 0 .../1.0.0/dataset/fields/ecs.spec.yml | 0 .../1.0.0/dataset/fields/fields.spec.yml | 41 +++++++++++++++++ .../1.0.0/dataset/fields/package.spec.yml | 0 .../versions/1.0.0/dataset/fields/spec.yml | 8 ++-- .../versions/1.0.0/dataset/manifest.spec.yml | 10 ++-- .../spec/versions/1.0.0/dataset/spec.yml | 14 +++--- .../spec/versions/1.0.0/kibana/spec.yml | 8 ++-- .../spec/versions/1.0.0/manifest.spec.yml | 31 +++++++++++-- .../go/resources/spec/versions/1.0.0/spec.yml | 12 +++-- 11 files changed, 143 insertions(+), 27 deletions(-) create mode 100644 code/go/resources/spec/versions/1.0.0/changelog.spec.yml delete mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml delete mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml delete mode 100644 code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml diff --git a/code/go/resources/spec/versions/1.0.0/changelog.spec.yml b/code/go/resources/spec/versions/1.0.0/changelog.spec.yml new file mode 100644 index 000000000..4772cee80 --- /dev/null +++ b/code/go/resources/spec/versions/1.0.0/changelog.spec.yml @@ -0,0 +1,46 @@ +## +## Describes the specification for the package's CHANGELOG file +## +spec: + # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability + type: array + items: + type: object + properties: + version: + description: Package version. + type: string + pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + examples: + - "1.0.4" + changes: + description: List of changes in package version. + type: array + items: + type: object + properties: + description: + description: Description of change. + type: string + examples: + - "Fix broken template" + type: + description: Type of change. + type: string + enum: + - "breaking-change" + - "bugfix" + - "enhancement" + - "known-issue" + link: + description: Link to issue or PR describing change in detail. + type: string + examples: + - "https://github.com/elastic/beats/issues/13507" + required: + - description + - type + - link + required: + - version + - changes \ No newline at end of file diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/base.spec.yml deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/ecs.spec.yml deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml index e69de29bb..576f3ba49 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml +++ b/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml @@ -0,0 +1,41 @@ +## +## Describes the specification for a dataset's various field definition files +## +spec: + # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability + type: object + properties: + name: + description: Name of field + type: string + title: + description: Title of field + type: string + type: + description: Datatype of field + type: string + enum: + - constant_keyword + - date + - group + description: + description: Short description of field + type: string + group: + description: TODO + type: int + level: + description: TODO + type: string + enum: + - custom + default_field: + description: "Is this field a default? TODO: better description" + type: boolean + default: true + fields: + description: Sub-fields, when type is group + $ref: "#" # JSON-schema syntax for pointing to the root of the schema + required: + - name + - type diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/package.spec.yml deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml index 5d2eeea1a..0b4f7e310 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml +++ b/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml @@ -5,23 +5,23 @@ spec: name: "base-fields.yml" required: true contentMediaType: "application/x-yaml" - specRef: "base.spec.yml" + $ref: "./fields.spec.yml" - name: dataset fields description: Dataset-specific fields definitions type: file name: "fields.yml" required: true contentMediaType: "application/x-yaml" - specRef: "fields.spec.yml" + $ref: "./fields.spec.yml" - name: package fields description: Package-specific fields definitions type: file name: "package-fields.yml" contentMediaType: "application/x-yaml" - specRef: "package.spec.yml" + $ref: "./fields.spec.yml" - name: ECS fields description: ECS fields definitions type: file name: "ecs.yml" contentMediaType: "application/x-yaml" - specRef: "ecs.spec.yml" \ No newline at end of file + $ref: "./fields.spec.yml" \ No newline at end of file diff --git a/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml index fd1954f92..b4c0c0b09 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml +++ b/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml @@ -14,8 +14,8 @@ spec: description: Stability of dataset. type: string enum: + - experimental - beta - - TODO_ADD_MORE examples: - beta type: @@ -23,7 +23,7 @@ spec: type: string enum: - metrics - - TODO_ADD_MORE + - logs examples: - metrics streams: @@ -62,7 +62,7 @@ spec: type: string enum: - text - - TODO_ADD_MORE + - yaml examples: - text title: @@ -71,7 +71,7 @@ spec: examples: - Hosts multi: - description: TODO + description: Can variable contain multiple values? type: boolean default: false examples: @@ -83,7 +83,7 @@ spec: examples: - true show_user: - description: TODO + description: Should this variable be shown to the user by default? type: boolean default: true examples: diff --git a/code/go/resources/spec/versions/1.0.0/dataset/spec.yml b/code/go/resources/spec/versions/1.0.0/dataset/spec.yml index 1914bb899..29404ce04 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/spec.yml +++ b/code/go/resources/spec/versions/1.0.0/dataset/spec.yml @@ -3,28 +3,28 @@ spec: type: folder pattern: "[a-z0-9][a-z0-9_]+[a-z0-9]" minOccurences: 1 - spec: + contents: - description: A dataset's manifest file type: file contentMediaType: "application/x-yaml" name: "manifest.yml" required: true - specRef: "manifest.spec.yml" + $ref: "./manifest.spec.yml" - description: Folder containing field definitions type: folder name: fields required: true - specRef: "fields/spec.yml" + $ref: "./fields/spec.yml" - description: Folder containing agent-related definitions type: folder name: agent required: true - spec: + contents: - description: Folder containing agent stream definitions type: folder name: stream required: true - spec: + contents: - description: Agent stream definition type: file name: "stream.yml.hbs" @@ -33,11 +33,11 @@ spec: - description: Folder containing Elasticsearch assets type: folder name: elasticsearch - spec: + contents: - description: Folder containing Elasticsearch Ingest Node pipeline definitions type: folder name: ingest_pipeline - spec: + contents: - description: Default ingest pipeline definition type: file name: "default.yml" diff --git a/code/go/resources/spec/versions/1.0.0/kibana/spec.yml b/code/go/resources/spec/versions/1.0.0/kibana/spec.yml index 4cbd3a45a..aed018c63 100644 --- a/code/go/resources/spec/versions/1.0.0/kibana/spec.yml +++ b/code/go/resources/spec/versions/1.0.0/kibana/spec.yml @@ -3,7 +3,7 @@ type: folder name: dashboard required: false - spec: + contents: - description: A dashboard asset file type: file contentMediaType: "application/json" @@ -12,7 +12,7 @@ type: folder name: visualization required: false - spec: + contents: - description: A visualization asset file type: file contentMediaType: "application/json" @@ -21,7 +21,7 @@ type: folder name: search required: false - spec: + contents: - description: A saved search asset file type: file contentMediaType: "application/json" @@ -30,7 +30,7 @@ type: folder name: map required: false - spec: + contents: - description: A map asset file type: file contentMediaType: "application/json" diff --git a/code/go/resources/spec/versions/1.0.0/manifest.spec.yml b/code/go/resources/spec/versions/1.0.0/manifest.spec.yml index 10f300290..249306782 100644 --- a/code/go/resources/spec/versions/1.0.0/manifest.spec.yml +++ b/code/go/resources/spec/versions/1.0.0/manifest.spec.yml @@ -14,6 +14,7 @@ spec: name: description: The name of the package. type: string + pattern: "[a-z0-9_]+" examples: - apache title: @@ -66,9 +67,29 @@ spec: items: type: string enum: + - aws + - azure + - cloud + - config_management + - containers + - crm + - custom + - datastore + - elastic_stack + - google_cloud + - kubernetes + - languages + - message_queue + - monitoring + - network + - notification + - os_system + - productivity - security + - support + - ticketing + - version_control - web - - TODO_ADD_MORE examples: - web conditions: @@ -187,6 +208,8 @@ spec: type: string examples: - Collecting Apache access and error logs + # TODO: address duplication of "vars" schema between here and dataset manifest spec, probably + # using "$ref" somehow. vars: description: Input configuration variables. type: array @@ -203,7 +226,7 @@ spec: type: string enum: - text - - TODO_ADD_MORE + - yaml examples: - text title: @@ -212,7 +235,7 @@ spec: examples: - Hosts multi: - description: TODO + description: Can variable contain multiple values? type: boolean default: false examples: @@ -224,7 +247,7 @@ spec: examples: - true show_user: - description: TODO + description: Should this variable be shown to the user by default? type: boolean default: true examples: diff --git a/code/go/resources/spec/versions/1.0.0/spec.yml b/code/go/resources/spec/versions/1.0.0/spec.yml index abda0af95..5ba478f29 100644 --- a/code/go/resources/spec/versions/1.0.0/spec.yml +++ b/code/go/resources/spec/versions/1.0.0/spec.yml @@ -9,12 +9,18 @@ spec: contentMediaType: "application/x-yaml" name: "manifest.yml" required: true - specRef: "manifest.spec.yml" + $ref: "./manifest.spec.yml" +- description: The package's CHANGELOG file + type: file + contentMediaType: "application/x-yaml" + name: "changelog.yml" + required: true + $ref: "./changelog.spec.yml" - description: Folder containing dataset definitions type: folder name: dataset required: true - specRef: "dataset/spec.yml" + $ref: "./dataset/spec.yml" - description: Folder containing documentation for the package type: folder name: docs @@ -23,4 +29,4 @@ spec: type: folder name: kibana required: false - specRef: "kibana/spec.yml" \ No newline at end of file + $ref: "./kibana/spec.yml" \ No newline at end of file From 67fa8a0409e2569f81c260fa81f95c92bcd4b10a Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 4 Aug 2020 17:08:08 -0700 Subject: [PATCH 18/46] Fleshing out folder validation a bit --- code/go/go.mod | 3 +- code/go/go.sum | 9 +- code/go/internal/validator/folder.go | 124 ++++++++++++++++++ code/go/internal/validator/package.go | 11 +- code/go/internal/validator/spec.go | 51 ++----- code/go/internal/validator/spec_test.go | 8 +- code/go/pkg/validator/validator.go | 2 +- code/go/pkg/validator/validator_test.go | 15 +++ .../versions/{1.0.0 => 1}/changelog.spec.yml | 2 + .../resources/spec/versions/1/changelog.yml | 8 ++ .../dataset/fields/fields.spec.yml | 32 +++-- .../{1.0.0 => 1}/dataset/fields/spec.yml | 0 .../{1.0.0 => 1}/dataset/manifest.spec.yml | 49 ++++++- .../versions/{1.0.0 => 1}/dataset/spec.yml | 0 .../versions/{1.0.0 => 1}/kibana/spec.yml | 11 +- .../versions/{1.0.0 => 1}/manifest.spec.yml | 116 +++++++--------- .../spec/versions/{1.0.0 => 1}/spec.yml | 1 + 17 files changed, 303 insertions(+), 139 deletions(-) create mode 100644 code/go/internal/validator/folder.go create mode 100644 code/go/pkg/validator/validator_test.go rename code/go/resources/spec/versions/{1.0.0 => 1}/changelog.spec.yml (94%) create mode 100644 code/go/resources/spec/versions/1/changelog.yml rename code/go/resources/spec/versions/{1.0.0 => 1}/dataset/fields/fields.spec.yml (67%) rename code/go/resources/spec/versions/{1.0.0 => 1}/dataset/fields/spec.yml (100%) rename code/go/resources/spec/versions/{1.0.0 => 1}/dataset/manifest.spec.yml (54%) rename code/go/resources/spec/versions/{1.0.0 => 1}/dataset/spec.yml (100%) rename code/go/resources/spec/versions/{1.0.0 => 1}/kibana/spec.yml (77%) rename code/go/resources/spec/versions/{1.0.0 => 1}/manifest.spec.yml (62%) rename code/go/resources/spec/versions/{1.0.0 => 1}/spec.yml (97%) diff --git a/code/go/go.mod b/code/go/go.mod index b109154f5..ec63bc157 100644 --- a/code/go/go.mod +++ b/code/go/go.mod @@ -3,8 +3,9 @@ module github.com/elastic/package-spec/code/go go 1.14 require ( + github.com/Masterminds/semver/v3 v3.1.0 + github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/stretchr/testify v1.6.1 - github.com/xeipuuv/gojsonschema v1.2.0 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c ) diff --git a/code/go/go.sum b/code/go/go.sum index 65b266313..b3cbf26e7 100644 --- a/code/go/go.sum +++ b/code/go/go.sum @@ -1,3 +1,5 @@ +github.com/Masterminds/semver/v3 v3.1.0 h1:Y2lUDsFKVRSYGojLJ1yLxSXdMmMYTYls0rCvoqmMUQk= +github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -7,15 +9,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go new file mode 100644 index 000000000..ac599f8e3 --- /dev/null +++ b/code/go/internal/validator/folder.go @@ -0,0 +1,124 @@ +package validator + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "regexp" + + "github.com/pkg/errors" + "gopkg.in/yaml.v3" +) + +type folderSpec struct { + specPath string + itemSpecs []folderItemSpec +} + +type folderItemSpec struct { + Description string `yaml:"description"` + ItemType string `yaml:"type"` + ContentMediaType string `yaml:"contentMediaType"` + Name string `yaml:"name"` + Pattern string `yaml:"pattern"` + Required bool `yaml:"required"` + Ref string `yaml:"$ref"` +} + +func newFolderSpec(specPath string) (*folderSpec, error) { + if _, err := os.Stat(specPath); os.IsNotExist(err) { + return nil, errors.Wrap(err, "no folder specification file found") + } + + data, err := ioutil.ReadFile(specPath) + if err != nil { + return nil, errors.Wrap(err, "could not read folder specification file") + } + + var wrapper struct { + Spec []folderItemSpec `yaml:",flow"` + } + if err := yaml.Unmarshal(data, &wrapper); err != nil { + return nil, errors.Wrap(err, "could not parse folder specification file") + } + + fs := folderSpec{ + specPath, + wrapper.Spec, + } + + return &fs, nil +} + +func (fs *folderSpec) Validate(folderPath string) ValidationErrors { + var errs ValidationErrors + files, err := ioutil.ReadDir(folderPath) + if err != nil { + errs = append(errs, errors.Wrapf(err, "could not read folder [%s]", folderPath)) + return errs + } + + for _, file := range files { + fileName := file.Name() + itemSpec, err := fs.findItemSpec(fileName) + if err != nil { + errs = append(errs, err) + continue + } + if itemSpec == nil { + errs = append(errs, fmt.Errorf("filename [%s] does not match spec for folder [%s]", fileName, folderPath)) + continue + } + + if file.IsDir() { + if itemSpec.ItemType != "folder" { + errs = append(errs, fmt.Errorf("[%s] is a folder but is expected to be a file", fileName)) + continue + } + + subFolderSpecPath := path.Join(filepath.Dir(fs.specPath), itemSpec.Ref) + subFolderSpec, err := newFolderSpec(subFolderSpecPath) + if err != nil { + errs = append(errs, err) + continue + } + + subFolderPath := path.Join(folderPath, fileName) + errs = subFolderSpec.Validate(subFolderPath) + if len(errs) > 0 { + errs = append(errs, err) + } + } else { + if itemSpec.ItemType != "file" { + errs = append(errs, fmt.Errorf("[%s] is a file but is expected to be a folder", fileName)) + continue + } + // TODO: more validation for file item + } + } + + // TODO: validate that required items in spec are all accounted for + return errs +} + +func (fs *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, error) { + for _, itemSpec := range fs.itemSpecs { + if itemSpec.Name != "" && itemSpec.Name == folderItemName { + return &itemSpec, nil + } + if itemSpec.Pattern != "" { + isMatch, err := regexp.MatchString(itemSpec.Pattern, folderItemName) + if err != nil { + return nil, errors.Wrap(err, "invalid folder item spec pattern") + } + if isMatch { + return &itemSpec, nil + } + } + } + + // No item spec found + return nil, nil +} diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 2d293193d..6a4c604be 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -6,13 +6,15 @@ import ( "os" "path" + "github.com/Masterminds/semver/v3" + "gopkg.in/yaml.v3" "github.com/pkg/errors" ) type Package struct { - SpecVersion string + SpecVersion *semver.Version RootPath string } @@ -44,13 +46,14 @@ func NewPackage(pkgRootPath string) (*Package, error) { return nil, errors.Wrapf(err, "could not parse package manifest file [%v]", pkgManifestPath) } - if manifest.SpecVersion == "" { - return nil, fmt.Errorf("could not read specification version from package manifest file [%v]", pkgManifestPath) + specVersion, err := semver.NewVersion(manifest.SpecVersion) + if err != nil { + return nil, errors.Wrapf(err, "could not read specification version from package manifest file [%v]", pkgManifestPath) } // Instantiate Package object and return it p := Package{ - manifest.SpecVersion, + specVersion, pkgRootPath, } diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 4107469d5..0a1dd90ef 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -4,17 +4,20 @@ import ( "fmt" "os" "path" + "strconv" + "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "github.com/xeipuuv/gojsonschema" ) type Spec struct { - version string + version semver.Version + specPath string } -func NewSpec(version string) (*Spec, error) { - specPath := path.Join("..", "..", "resources", "spec", "versions", version) +func NewSpec(version semver.Version) (*Spec, error) { + majorVersion := strconv.FormatUint(version.Major(), 10) + specPath := path.Join("..", "..", "resources", "spec", "versions", majorVersion) info, err := os.Stat(specPath) if os.IsNotExist(err) { return nil, errors.Wrapf(err, "no specification found for version [%v]", version) @@ -26,6 +29,7 @@ func NewSpec(version string) (*Spec, error) { s := Spec{ version, + specPath, } return &s, nil @@ -34,43 +38,12 @@ func NewSpec(version string) (*Spec, error) { func (s Spec) ValidatePackage(pkg Package) ValidationErrors { var errs ValidationErrors - specJsonSchema, err := s.toJsonSchema() + rootSpecPath := path.Join(s.specPath, "spec.yml") + rootSpec, err := newFolderSpec(rootSpecPath) if err != nil { - errs = append(errs, errors.Wrap(err, "could not convert specification to JSON schema")) + errs = append(errs, errors.Wrap(err, "could not read root folder spec file")) return errs } - packageJson, err := pkg.ToJson() - if err != nil { - errs = append(errs, errors.Wrap(err, "could not convert package contents to JSON")) - return errs - } - - // Validate mega JSON object representing package against mega JSON schema - schemaLoader := gojsonschema.NewStringLoader(specJsonSchema) - documentLoader := gojsonschema.NewStringLoader(packageJson) - validationResult, err := gojsonschema.Validate(schemaLoader, documentLoader) - - // Parse validation errors and make them friendlier so they make sense in the context of packages - if !validationResult.Valid() { - for _, err := range validationResult.Errors() { - // TODO: translate to friendlier errors before appending - errs = append(errs, errors.New(err.String())) - } - - return errs - } - - // TODO: Perform additional non-trivial semantic validations - - // Return validation errors - return errs -} - -func (s Spec) toJsonSchema() (string, error) { - // TODO - // Stitch together specification YAML files into mega YAML specification - // Convert mega YAML non-JSON schema parts to JSON schema equivalents - // Convert mega YAML specification into mega JSON object (so we have a valid JSON schema) - return "", nil + return rootSpec.Validate(pkg.RootPath) } diff --git a/code/go/internal/validator/spec_test.go b/code/go/internal/validator/spec_test.go index a4b06dfe6..323b2380f 100644 --- a/code/go/internal/validator/spec_test.go +++ b/code/go/internal/validator/spec_test.go @@ -3,6 +3,8 @@ package validator import ( "testing" + "github.com/Masterminds/semver/v3" + "github.com/stretchr/testify/require" ) @@ -11,13 +13,13 @@ func TestNewSpec(t *testing.T) { expectedErrContains string }{ "1.0.0": {}, - "non_existent": { - "no specification found for version [non_existent]", + "9999.99.999": { + "no specification found for version [9999.99.999]", }, } for version, test := range tests { - spec, err := NewSpec(version) + spec, err := NewSpec(*semver.MustParse(version)) if test.expectedErrContains == "" { require.NoError(t, err) require.IsType(t, &Spec{}, spec) diff --git a/code/go/pkg/validator/validator.go b/code/go/pkg/validator/validator.go index 2b9313ee1..bfbe68475 100644 --- a/code/go/pkg/validator/validator.go +++ b/code/go/pkg/validator/validator.go @@ -12,7 +12,7 @@ func ValidateFromPath(packageRootPath string) error { return err } - spec, err := validator.NewSpec(pkg.SpecVersion) + spec, err := validator.NewSpec(*pkg.SpecVersion) if err != nil { return err } diff --git a/code/go/pkg/validator/validator_test.go b/code/go/pkg/validator/validator_test.go new file mode 100644 index 000000000..73c14e235 --- /dev/null +++ b/code/go/pkg/validator/validator_test.go @@ -0,0 +1,15 @@ +package validator + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestValidate(t *testing.T) { + pkgRootPath := "../../internal/validator/test/packages/good" + errs := ValidateFromPath(pkgRootPath) + require.Len(t, errs, 0) + fmt.Println(errs) +} diff --git a/code/go/resources/spec/versions/1.0.0/changelog.spec.yml b/code/go/resources/spec/versions/1/changelog.spec.yml similarity index 94% rename from code/go/resources/spec/versions/1.0.0/changelog.spec.yml rename to code/go/resources/spec/versions/1/changelog.spec.yml index 4772cee80..999eb9a5f 100644 --- a/code/go/resources/spec/versions/1.0.0/changelog.spec.yml +++ b/code/go/resources/spec/versions/1/changelog.spec.yml @@ -6,6 +6,7 @@ spec: type: array items: type: object + additionalProperties: false properties: version: description: Package version. @@ -18,6 +19,7 @@ spec: type: array items: type: object + additionalProperties: false properties: description: description: Description of change. diff --git a/code/go/resources/spec/versions/1/changelog.yml b/code/go/resources/spec/versions/1/changelog.yml new file mode 100644 index 000000000..ee10f053a --- /dev/null +++ b/code/go/resources/spec/versions/1/changelog.yml @@ -0,0 +1,8 @@ +## +## This file documents changes in the package specification. It is NOT a package specification file. +## +- version: 1.0.0-alpha1 + changes: + - description: Initial version of the Elastic Package specifiction. + type: enhancement + link: https://github.com/elastic/package-spec/pulls/1 diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml b/code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml similarity index 67% rename from code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml rename to code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml index 576f3ba49..91aa649b2 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/fields/fields.spec.yml +++ b/code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml @@ -4,6 +4,7 @@ spec: # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability type: object + additionalProperties: true properties: name: description: Name of field @@ -16,23 +17,30 @@ spec: type: string enum: - constant_keyword + - text + - keyword + - long + - integer + - short + - byte + - double + - float + - half_float + - scaled_float - date + - date_nanos + - boolean + - binary + - integer_range + - float_range + - long_range + - double_range + - date_range + - ip_range - group description: description: Short description of field type: string - group: - description: TODO - type: int - level: - description: TODO - type: string - enum: - - custom - default_field: - description: "Is this field a default? TODO: better description" - type: boolean - default: true fields: description: Sub-fields, when type is group $ref: "#" # JSON-schema syntax for pointing to the root of the schema diff --git a/code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml b/code/go/resources/spec/versions/1/dataset/fields/spec.yml similarity index 100% rename from code/go/resources/spec/versions/1.0.0/dataset/fields/spec.yml rename to code/go/resources/spec/versions/1/dataset/fields/spec.yml diff --git a/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml b/code/go/resources/spec/versions/1/dataset/manifest.spec.yml similarity index 54% rename from code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml rename to code/go/resources/spec/versions/1/dataset/manifest.spec.yml index b4c0c0b09..612132e27 100644 --- a/code/go/resources/spec/versions/1.0.0/dataset/manifest.spec.yml +++ b/code/go/resources/spec/versions/1/dataset/manifest.spec.yml @@ -4,12 +4,19 @@ spec: # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L39 + name: + description: Name of dataset + type: string + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L41 title: description: Title of dataset. type: string examples: - AWS billing metrics + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L42 release: description: Stability of dataset. type: string @@ -18,6 +25,7 @@ spec: - beta examples: - beta + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L38 type: description: Type of dataset type: string @@ -26,37 +34,50 @@ spec: - logs examples: - metrics + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L46 streams: description: Streams offered by dataset. type: array items: type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L66 + input: + type: string + examples: + - aws/metrics + - s3 + - file + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L71 title: type: string examples: - AWS Billing metrics + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L72 description: type: string examples: - Collect AWS billing metrics - input: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L70 + template_path: + description: "Path to Elasticsearch index template for stream." type: string - examples: - - aws/metrics - - s3 - - file + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L67 vars: description: Input variables. type: array items: type: object + additionalProperties: false properties: + https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L77 name: description: Variable name. type: string examples: - hosts + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L78 type: description: Data type of variable. type: string @@ -65,29 +86,40 @@ spec: - yaml examples: - text + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L79 title: - description: Title of variable + description: Title of variable. type: string examples: - Hosts + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L80 + description: + description: Short description of variable. + type: string + examples: + - "Hosts of integration service to connect to" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L81 multi: description: Can variable contain multiple values? type: boolean default: false examples: - true + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L82 required: description: Is variable required? type: boolean default: false examples: - true + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L83 show_user: description: Should this variable be shown to the user by default? type: boolean default: true examples: - false + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L84 default: description: Default value(s) for variable type: array @@ -98,8 +130,13 @@ spec: required: - name - type + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L73 + enabled: + description: Is stream enabled? + type: boolean required: - title - description + - input required: - title diff --git a/code/go/resources/spec/versions/1.0.0/dataset/spec.yml b/code/go/resources/spec/versions/1/dataset/spec.yml similarity index 100% rename from code/go/resources/spec/versions/1.0.0/dataset/spec.yml rename to code/go/resources/spec/versions/1/dataset/spec.yml diff --git a/code/go/resources/spec/versions/1.0.0/kibana/spec.yml b/code/go/resources/spec/versions/1/kibana/spec.yml similarity index 77% rename from code/go/resources/spec/versions/1.0.0/kibana/spec.yml rename to code/go/resources/spec/versions/1/kibana/spec.yml index aed018c63..abdaa0663 100644 --- a/code/go/resources/spec/versions/1.0.0/kibana/spec.yml +++ b/code/go/resources/spec/versions/1/kibana/spec.yml @@ -34,4 +34,13 @@ - description: A map asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" \ No newline at end of file + pattern: ".+\.json" + - description: Folder containing Kibana index pattern assets + type: folder + name: "index_pattern" + required: false + contents: + - description: An index pattern asset file + type: file + contentMediaType: "application/json" + pattern: ".+\.json" diff --git a/code/go/resources/spec/versions/1.0.0/manifest.spec.yml b/code/go/resources/spec/versions/1/manifest.spec.yml similarity index 62% rename from code/go/resources/spec/versions/1.0.0/manifest.spec.yml rename to code/go/resources/spec/versions/1/manifest.spec.yml index 249306782..989237b5a 100644 --- a/code/go/resources/spec/versions/1.0.0/manifest.spec.yml +++ b/code/go/resources/spec/versions/1/manifest.spec.yml @@ -4,46 +4,51 @@ spec: # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L55 format_version: description: The version of the package specification format used by this package. type: string - pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + pattern: "^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$" examples: - "1.0.0" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L74 name: description: The name of the package. type: string pattern: "[a-z0-9_]+" examples: - apache + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L75 title: description: The title of the package. type: string examples: - Apache + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L78 description: description: A longer description of the package. type: string examples: - Apache Integration + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L76 version: description: The version of the package. type: string - pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + pattern: "^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$" examples: - "0.1.0" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L58 license: description: The license under which the package is being released. type: string enum: - - apache2 - basic - - gold - - platinum default: basic examples: - basic + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L79 type: description: The type of package. type: string @@ -52,6 +57,7 @@ spec: - solution examples: - integration + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L77 release: description: The stability of the package. type: string @@ -61,6 +67,7 @@ spec: - ga examples: - experimental + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L60 categories: description: Categories to which this package belongs. type: array @@ -92,39 +99,48 @@ spec: - web examples: - web + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L61 conditions: description: Constraints under which this package can be installed. type: object + additionalProperties: false properties: kibana: description: Kibana versions compatible with this package. type: object + additionalProperties: false properties: version: type: string examples: - ">=7.9.0" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L82 icons: description: List of icons for by this package. type: array items: type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L109 src: description: Relative path to the icon's image file. type: string examples: - "/img/logo_apache.svg" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L110 title: description: Title of icon. type: string examples: - "Apache Logo" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L111 size: description: Size of the icon. type: string examples: - "32x32" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L112 type: description: MIME type of the icon image file. type: string @@ -132,27 +148,33 @@ spec: - "image/svg+xml" required: - src + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L62 screenshots: description: List of screenshots of Kibana assets created by this package. type: array items: type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L109 src: description: Relative path to the scrennshot's image file. type: string examples: - "/img/apache_httpd_server_status.png" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L110 title: description: Title of screenshot. type: string examples: - "Apache HTTPD Server Status" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L111 size: description: Size of the screenshot. type: string examples: - "1215x1199" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L112 type: description: MIME type of the screenshot image file. type: string @@ -161,117 +183,81 @@ spec: required: - src - title - removable: - description: Is this package removable form the package registry? - type: boolean + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L64 config_templates: description: List of configuration templates offered by this package. type: array items: type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L87 name: description: Name of configuration template. type: string examples: - apache + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L88 title: description: Title of configuration template. type: string examples: - Apache logs and metrics + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L89 description: description: Longer description of configuration template. type: string examples: - Collect logs and metrics from Apache instances - multiple: - type: boolean - solution: - type: string + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L90 inputs: description: List of inputs supported by configuration template. type: array items: type: object + additionalProperties: false properties: + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L58 type: description: Type of input. type: string + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L60 title: description: Title of input. type: string examples: - Collect logs from Apache instances + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L61 description: description: Longer description of input. type: string examples: - Collecting Apache access and error logs - # TODO: address duplication of "vars" schema between here and dataset manifest spec, probably - # using "$ref" somehow. + # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L59 vars: - description: Input configuration variables. - type: array - items: - type: object - properties: - name: - description: Variable name. - type: string - examples: - - hosts - type: - description: Data type of variable. - type: string - enum: - - text - - yaml - examples: - - text - title: - description: Title of variable - type: string - examples: - - Hosts - multi: - description: Can variable contain multiple values? - type: boolean - default: false - examples: - - true - required: - description: Is variable required? - type: boolean - default: false - examples: - - true - show_user: - description: Should this variable be shown to the user by default? - type: boolean - default: true - examples: - - false - default: - description: Default value(s) for variable - type: array - items: - type: string - examples: - - "http://127.0.0.1" - required: - - name - - type + $ref: "./dataset/manifest.spec.yml#streams/items/properties/vars" required: - type - title - description + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L91 + multiple: + type: boolean + solution: + type: string required: - name - title - description + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L65 + datasets: + type: array + items: + $ref: "./dataset/manifest.spec.yml" + # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L66 owner: type: object + additionalProperties: false properties: github: description: GitHub repository name of package maintainer. diff --git a/code/go/resources/spec/versions/1.0.0/spec.yml b/code/go/resources/spec/versions/1/spec.yml similarity index 97% rename from code/go/resources/spec/versions/1.0.0/spec.yml rename to code/go/resources/spec/versions/1/spec.yml index 5ba478f29..63a29acf4 100644 --- a/code/go/resources/spec/versions/1.0.0/spec.yml +++ b/code/go/resources/spec/versions/1/spec.yml @@ -3,6 +3,7 @@ ## ## Describes the folders and files that make up a package. ## +version: 1.0.0-alpha1 spec: - description: The main package manifest file type: file From 5eecf2be8afd4acf921da590f6727c8d0a466320 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 4 Aug 2020 20:20:58 -0700 Subject: [PATCH 19/46] Adding inverse validation --- code/go/internal/validator/folder.go | 67 ++++++++++++++++++- .../test/packages/good/changelog.yml | 0 2 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 code/go/internal/validator/test/packages/good/changelog.yml diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index ac599f8e3..57dff7527 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -12,6 +12,9 @@ import ( "gopkg.in/yaml.v3" ) +const ItemTypeFile = "file" +const ItemTypeFolder = "folder" + type folderSpec struct { specPath string itemSpecs []folderItemSpec @@ -73,11 +76,15 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { } if file.IsDir() { - if itemSpec.ItemType != "folder" { + if !itemSpec.isSameType(file) { errs = append(errs, fmt.Errorf("[%s] is a folder but is expected to be a file", fileName)) continue } + if itemSpec.Ref == "" { + continue + } + subFolderSpecPath := path.Join(filepath.Dir(fs.specPath), itemSpec.Ref) subFolderSpec, err := newFolderSpec(subFolderSpecPath) if err != nil { @@ -91,7 +98,7 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { errs = append(errs, err) } } else { - if itemSpec.ItemType != "file" { + if !itemSpec.isSameType(file) { errs = append(errs, fmt.Errorf("[%s] is a file but is expected to be a folder", fileName)) continue } @@ -99,7 +106,28 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { } } - // TODO: validate that required items in spec are all accounted for + // Validate that required items in spec are all accounted for + for _, itemSpec := range fs.itemSpecs { + if !itemSpec.Required { + continue + } + + fileFound, err := itemSpec.matchingFileExists(files) + if err != nil { + errs = append(errs, err) + continue + } + + if !fileFound { + var err error + if itemSpec.Name != "" { + err = fmt.Errorf("expecting to find %s matching name [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Name, folderPath) + } else if itemSpec.Pattern != "" { + err = fmt.Errorf("expecting to find %s matching pattern [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Name, folderPath) + } + errs = append(errs, err) + } + } return errs } @@ -122,3 +150,36 @@ func (fs *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, erro // No item spec found return nil, nil } + +func (is *folderItemSpec) matchingFileExists(files []os.FileInfo) (bool, error) { + if is.Name != "" { + for _, file := range files { + if file.Name() == is.Name { + return is.isSameType(file), nil + } + } + } else if is.Pattern != "" { + for _, file := range files { + isMatch, err := regexp.MatchString(is.Pattern, file.Name()) + if err != nil { + return false, errors.Wrap(err, "invalid folder item spec pattern") + } + if isMatch { + return is.isSameType(file), nil + } + } + } + + return false, nil +} + +func (is *folderItemSpec) isSameType(file os.FileInfo) bool { + switch is.ItemType { + case ItemTypeFile: + return !file.IsDir() + case ItemTypeFolder: + return file.IsDir() + } + + return false +} diff --git a/code/go/internal/validator/test/packages/good/changelog.yml b/code/go/internal/validator/test/packages/good/changelog.yml new file mode 100644 index 000000000..e69de29bb From fde8deeb0791c805be7b5e11fe30b834763e42e9 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Tue, 4 Aug 2020 20:21:07 -0700 Subject: [PATCH 20/46] Fleshing out TODO --- code/go/internal/validator/package.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 6a4c604be..075608d68 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -62,7 +62,7 @@ func NewPackage(pkgRootPath string) (*Package, error) { // ToJson returns the package as a JSON document func (p Package) ToJson() (string, error) { - // TODO + // TODO: not sure if we need this now? // Stitch together package contents into mega JSON object return "", nil } From d35c9269a6f30811b0cc29c7ac49081140807b8d Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 5 Aug 2020 17:28:00 -0700 Subject: [PATCH 21/46] Updating specs --- .../spec/versions/1/changelog.spec.yml | 2 +- .../spec/versions/1/dataset/fields/spec.yml | 24 +--------- .../spec/versions/1/dataset/manifest.spec.yml | 45 +++++++++++-------- .../spec/versions/1/dataset/spec.yml | 2 +- .../resources/spec/versions/1/kibana/spec.yml | 10 ++--- .../spec/versions/1/manifest.spec.yml | 41 ++--------------- 6 files changed, 38 insertions(+), 86 deletions(-) diff --git a/code/go/resources/spec/versions/1/changelog.spec.yml b/code/go/resources/spec/versions/1/changelog.spec.yml index 999eb9a5f..5e2035b9e 100644 --- a/code/go/resources/spec/versions/1/changelog.spec.yml +++ b/code/go/resources/spec/versions/1/changelog.spec.yml @@ -11,7 +11,7 @@ spec: version: description: Package version. type: string - pattern: "^[0-9]+\.[0-9]+\.[0-9]+$" + pattern: '^[0-9]+\.[0-9]+\.[0-9]+$' examples: - "1.0.4" changes: diff --git a/code/go/resources/spec/versions/1/dataset/fields/spec.yml b/code/go/resources/spec/versions/1/dataset/fields/spec.yml index 0b4f7e310..580180efa 100644 --- a/code/go/resources/spec/versions/1/dataset/fields/spec.yml +++ b/code/go/resources/spec/versions/1/dataset/fields/spec.yml @@ -1,27 +1,7 @@ spec: -- name: base fields - description: Base fields definitions +- description: Fields definition type: file - name: "base-fields.yml" + pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]\.yml' required: true contentMediaType: "application/x-yaml" $ref: "./fields.spec.yml" -- name: dataset fields - description: Dataset-specific fields definitions - type: file - name: "fields.yml" - required: true - contentMediaType: "application/x-yaml" - $ref: "./fields.spec.yml" -- name: package fields - description: Package-specific fields definitions - type: file - name: "package-fields.yml" - contentMediaType: "application/x-yaml" - $ref: "./fields.spec.yml" -- name: ECS fields - description: ECS fields definitions - type: file - name: "ecs.yml" - contentMediaType: "application/x-yaml" - $ref: "./fields.spec.yml" \ No newline at end of file diff --git a/code/go/resources/spec/versions/1/dataset/manifest.spec.yml b/code/go/resources/spec/versions/1/dataset/manifest.spec.yml index 612132e27..26755f871 100644 --- a/code/go/resources/spec/versions/1/dataset/manifest.spec.yml +++ b/code/go/resources/spec/versions/1/dataset/manifest.spec.yml @@ -6,17 +6,14 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L39 name: description: Name of dataset type: string - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L41 title: description: Title of dataset. type: string examples: - AWS billing metrics - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L42 release: description: Stability of dataset. type: string @@ -25,7 +22,6 @@ spec: - beta examples: - beta - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L38 type: description: Type of dataset type: string @@ -34,7 +30,6 @@ spec: - logs examples: - metrics - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L46 streams: description: Streams offered by dataset. type: array @@ -42,28 +37,23 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L66 input: type: string examples: - aws/metrics - s3 - file - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L71 title: type: string examples: - AWS Billing metrics - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L72 description: type: string examples: - Collect AWS billing metrics - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L70 template_path: description: "Path to Elasticsearch index template for stream." type: string - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L67 vars: description: Input variables. type: array @@ -71,13 +61,11 @@ spec: type: object additionalProperties: false properties: - https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L77 name: description: Variable name. type: string examples: - hosts - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L78 type: description: Data type of variable. type: string @@ -86,40 +74,34 @@ spec: - yaml examples: - text - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L79 title: description: Title of variable. type: string examples: - Hosts - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L80 description: description: Short description of variable. type: string examples: - "Hosts of integration service to connect to" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L81 multi: description: Can variable contain multiple values? type: boolean default: false examples: - true - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L82 required: description: Is variable required? type: boolean default: false examples: - true - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L83 show_user: description: Should this variable be shown to the user by default? type: boolean default: true examples: - false - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L84 default: description: Default value(s) for variable type: array @@ -130,7 +112,6 @@ spec: required: - name - type - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L73 enabled: description: Is stream enabled? type: boolean @@ -138,5 +119,31 @@ spec: - title - description - input + elasticsearch: + description: Elasticsearch asset definitions + type: object + additionalProperties: false + properties: + index_template: + description: Index template definition + type: object + additionalProperties: false + properties: + settings: + description: Settings section of index template + type: object + mappings: + description: Mappings section of index template + type: object + ingest_pipeline: + description: Elasticsearch ingest pipeline settings + type: object + additionalProperties: false + properties: + name: + description: Ingest pipeline name + type: string + required: + - name required: - title diff --git a/code/go/resources/spec/versions/1/dataset/spec.yml b/code/go/resources/spec/versions/1/dataset/spec.yml index 29404ce04..b4131f567 100644 --- a/code/go/resources/spec/versions/1/dataset/spec.yml +++ b/code/go/resources/spec/versions/1/dataset/spec.yml @@ -1,7 +1,7 @@ spec: - description: Folder containing a single dataset definition type: folder - pattern: "[a-z0-9][a-z0-9_]+[a-z0-9]" + pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' minOccurences: 1 contents: - description: A dataset's manifest file diff --git a/code/go/resources/spec/versions/1/kibana/spec.yml b/code/go/resources/spec/versions/1/kibana/spec.yml index abdaa0663..525dcab60 100644 --- a/code/go/resources/spec/versions/1/kibana/spec.yml +++ b/code/go/resources/spec/versions/1/kibana/spec.yml @@ -7,7 +7,7 @@ - description: A dashboard asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" + pattern: '.+\.json' - description: Folder containing Kibana visualization assets type: folder name: visualization @@ -16,7 +16,7 @@ - description: A visualization asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" + pattern: '.+\.json' - description: Folder containing Kibana saved search assets type: folder name: search @@ -25,7 +25,7 @@ - description: A saved search asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" + pattern: '.+\.json' - description: Folder containing Kibana map assets type: folder name: map @@ -34,7 +34,7 @@ - description: A map asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" + pattern: '.+\.json' - description: Folder containing Kibana index pattern assets type: folder name: "index_pattern" @@ -43,4 +43,4 @@ - description: An index pattern asset file type: file contentMediaType: "application/json" - pattern: ".+\.json" + pattern: '.+\.json' diff --git a/code/go/resources/spec/versions/1/manifest.spec.yml b/code/go/resources/spec/versions/1/manifest.spec.yml index 989237b5a..f0e8cddee 100644 --- a/code/go/resources/spec/versions/1/manifest.spec.yml +++ b/code/go/resources/spec/versions/1/manifest.spec.yml @@ -6,40 +6,34 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L55 format_version: description: The version of the package specification format used by this package. type: string - pattern: "^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$" + pattern: '^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$' examples: - "1.0.0" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L74 name: description: The name of the package. type: string - pattern: "[a-z0-9_]+" + pattern: '[a-z0-9_]+' examples: - apache - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L75 title: description: The title of the package. type: string examples: - Apache - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L78 description: description: A longer description of the package. type: string examples: - Apache Integration - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L76 version: description: The version of the package. type: string - pattern: "^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$" + pattern: '^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$' examples: - "0.1.0" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L58 license: description: The license under which the package is being released. type: string @@ -48,16 +42,13 @@ spec: default: basic examples: - basic - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L79 type: description: The type of package. type: string enum: - integration - - solution examples: - integration - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L77 release: description: The stability of the package. type: string @@ -67,7 +58,6 @@ spec: - ga examples: - experimental - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L60 categories: description: Categories to which this package belongs. type: array @@ -99,7 +89,6 @@ spec: - web examples: - web - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L61 conditions: description: Constraints under which this package can be installed. type: object @@ -114,7 +103,6 @@ spec: type: string examples: - ">=7.9.0" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L82 icons: description: List of icons for by this package. type: array @@ -122,25 +110,21 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L109 src: description: Relative path to the icon's image file. type: string examples: - "/img/logo_apache.svg" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L110 title: description: Title of icon. type: string examples: - "Apache Logo" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L111 size: description: Size of the icon. type: string examples: - "32x32" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L112 type: description: MIME type of the icon image file. type: string @@ -148,7 +132,6 @@ spec: - "image/svg+xml" required: - src - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L62 screenshots: description: List of screenshots of Kibana assets created by this package. type: array @@ -156,25 +139,21 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L109 src: description: Relative path to the scrennshot's image file. type: string examples: - "/img/apache_httpd_server_status.png" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L110 title: description: Title of screenshot. type: string examples: - "Apache HTTPD Server Status" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L111 size: description: Size of the screenshot. type: string examples: - "1215x1199" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L112 type: description: MIME type of the screenshot image file. type: string @@ -183,7 +162,6 @@ spec: required: - src - title - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L64 config_templates: description: List of configuration templates offered by this package. type: array @@ -191,25 +169,21 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L87 name: description: Name of configuration template. type: string examples: - apache - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L88 title: description: Title of configuration template. type: string examples: - Apache logs and metrics - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L89 description: description: Longer description of configuration template. type: string examples: - Collect logs and metrics from Apache instances - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L90 inputs: description: List of inputs supported by configuration template. type: array @@ -217,44 +191,35 @@ spec: type: object additionalProperties: false properties: - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L58 type: description: Type of input. type: string - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L60 title: description: Title of input. type: string examples: - Collect logs from Apache instances - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L61 description: description: Longer description of input. type: string examples: - Collecting Apache access and error logs - # https://github.com/elastic/package-registry/blob/v0.8.0/util/dataset.go#L59 vars: $ref: "./dataset/manifest.spec.yml#streams/items/properties/vars" required: - type - title - description - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L91 multiple: type: boolean - solution: - type: string required: - name - title - description - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L65 datasets: type: array items: $ref: "./dataset/manifest.spec.yml" - # https://github.com/elastic/package-registry/blob/v0.8.0/util/package.go#L66 owner: type: object additionalProperties: false From 490334b97bd97aa45a3ea9f7ea47657f9dd75976 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 5 Aug 2020 17:28:18 -0700 Subject: [PATCH 22/46] Removing unnecessary method --- code/go/internal/validator/package.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 075608d68..362619207 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -59,10 +59,3 @@ func NewPackage(pkgRootPath string) (*Package, error) { return &p, nil } - -// ToJson returns the package as a JSON document -func (p Package) ToJson() (string, error) { - // TODO: not sure if we need this now? - // Stitch together package contents into mega JSON object - return "", nil -} From 81d3078cdc3ce6500879b6868cd0dbb679f6a45f Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Wed, 5 Aug 2020 17:57:28 -0700 Subject: [PATCH 23/46] More validation logic for sub-folders --- code/go/internal/validator/folder.go | 49 ++++++++++++------- code/go/internal/validator/spec.go | 2 +- .../good/dataset/foo/fields/some_fields.yml | 0 .../packages/good/dataset/foo/manifest.yml | 0 .../spec/versions/1/dataset/spec.yml | 4 +- versions/1/dataset/spec.yml | 4 +- 6 files changed, 35 insertions(+), 24 deletions(-) create mode 100644 code/go/internal/validator/test/packages/good/dataset/foo/fields/some_fields.yml create mode 100644 code/go/internal/validator/test/packages/good/dataset/foo/manifest.yml diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 57dff7527..05f5ee96a 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -21,13 +21,14 @@ type folderSpec struct { } type folderItemSpec struct { - Description string `yaml:"description"` - ItemType string `yaml:"type"` - ContentMediaType string `yaml:"contentMediaType"` - Name string `yaml:"name"` - Pattern string `yaml:"pattern"` - Required bool `yaml:"required"` - Ref string `yaml:"$ref"` + Description string `yaml:"description"` + ItemType string `yaml:"type"` + ContentMediaType string `yaml:"contentMediaType"` + Name string `yaml:"name"` + Pattern string `yaml:"pattern"` + Required bool `yaml:"required"` + Ref string `yaml:"$ref"` + Contents []folderItemSpec `yaml:"contents"` } func newFolderSpec(specPath string) (*folderSpec, error) { @@ -55,7 +56,7 @@ func newFolderSpec(specPath string) (*folderSpec, error) { return &fs, nil } -func (fs *folderSpec) Validate(folderPath string) ValidationErrors { +func (fs *folderSpec) validate(folderPath string) ValidationErrors { var errs ValidationErrors files, err := ioutil.ReadDir(folderPath) if err != nil { @@ -81,22 +82,32 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { continue } - if itemSpec.Ref == "" { + if itemSpec.Ref == "" && itemSpec.Contents == nil { + // No recursive validation needed continue } - subFolderSpecPath := path.Join(filepath.Dir(fs.specPath), itemSpec.Ref) - subFolderSpec, err := newFolderSpec(subFolderSpecPath) - if err != nil { - errs = append(errs, err) - continue + var subFolderSpec *folderSpec + if itemSpec.Ref != "" { + subFolderSpecPath := path.Join(filepath.Dir(fs.specPath), itemSpec.Ref) + subFolderSpec, err = newFolderSpec(subFolderSpecPath) + if err != nil { + errs = append(errs, err) + continue + } + } else if itemSpec.Contents != nil { + subFolderSpec = &folderSpec{ + itemSpecs: itemSpec.Contents, + specPath: fs.specPath, + } } subFolderPath := path.Join(folderPath, fileName) - errs = subFolderSpec.Validate(subFolderPath) - if len(errs) > 0 { - errs = append(errs, err) + subErrs := subFolderSpec.validate(subFolderPath) + if len(subErrs) > 0 { + errs = append(errs, subErrs) } + } else { if !itemSpec.isSameType(file) { errs = append(errs, fmt.Errorf("[%s] is a file but is expected to be a folder", fileName)) @@ -106,7 +117,7 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { } } - // Validate that required items in spec are all accounted for + // validate that required items in spec are all accounted for for _, itemSpec := range fs.itemSpecs { if !itemSpec.Required { continue @@ -123,7 +134,7 @@ func (fs *folderSpec) Validate(folderPath string) ValidationErrors { if itemSpec.Name != "" { err = fmt.Errorf("expecting to find %s matching name [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Name, folderPath) } else if itemSpec.Pattern != "" { - err = fmt.Errorf("expecting to find %s matching pattern [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Name, folderPath) + err = fmt.Errorf("expecting to find %s matching pattern [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Pattern, folderPath) } errs = append(errs, err) } diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 0a1dd90ef..593a67d27 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -45,5 +45,5 @@ func (s Spec) ValidatePackage(pkg Package) ValidationErrors { return errs } - return rootSpec.Validate(pkg.RootPath) + return rootSpec.validate(pkg.RootPath) } diff --git a/code/go/internal/validator/test/packages/good/dataset/foo/fields/some_fields.yml b/code/go/internal/validator/test/packages/good/dataset/foo/fields/some_fields.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/internal/validator/test/packages/good/dataset/foo/manifest.yml b/code/go/internal/validator/test/packages/good/dataset/foo/manifest.yml new file mode 100644 index 000000000..e69de29bb diff --git a/code/go/resources/spec/versions/1/dataset/spec.yml b/code/go/resources/spec/versions/1/dataset/spec.yml index b4131f567..faf75f90d 100644 --- a/code/go/resources/spec/versions/1/dataset/spec.yml +++ b/code/go/resources/spec/versions/1/dataset/spec.yml @@ -2,7 +2,7 @@ spec: - description: Folder containing a single dataset definition type: folder pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' - minOccurences: 1 + required: true contents: - description: A dataset's manifest file type: file @@ -18,7 +18,7 @@ spec: - description: Folder containing agent-related definitions type: folder name: agent - required: true + required: false contents: - description: Folder containing agent stream definitions type: folder diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index b4131f567..faf75f90d 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -2,7 +2,7 @@ spec: - description: Folder containing a single dataset definition type: folder pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' - minOccurences: 1 + required: true contents: - description: A dataset's manifest file type: file @@ -18,7 +18,7 @@ spec: - description: Folder containing agent-related definitions type: folder name: agent - required: true + required: false contents: - description: Folder containing agent stream definitions type: folder From 3b45656c26ba800a8596f27932e6b3b48a92a00d Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 12:31:13 -0700 Subject: [PATCH 24/46] Removing old files --- .../spec/versions/1/changelog.spec.yml | 48 ---- .../resources/spec/versions/1/changelog.yml | 8 - .../versions/1/dataset/fields/fields.spec.yml | 49 ---- .../spec/versions/1/dataset/fields/spec.yml | 7 - .../spec/versions/1/dataset/manifest.spec.yml | 149 ----------- .../spec/versions/1/dataset/spec.yml | 45 ---- .../resources/spec/versions/1/kibana/spec.yml | 46 ---- .../spec/versions/1/manifest.spec.yml | 236 ------------------ code/go/resources/spec/versions/1/spec.yml | 33 --- 9 files changed, 621 deletions(-) delete mode 100644 code/go/resources/spec/versions/1/changelog.spec.yml delete mode 100644 code/go/resources/spec/versions/1/changelog.yml delete mode 100644 code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml delete mode 100644 code/go/resources/spec/versions/1/dataset/fields/spec.yml delete mode 100644 code/go/resources/spec/versions/1/dataset/manifest.spec.yml delete mode 100644 code/go/resources/spec/versions/1/dataset/spec.yml delete mode 100644 code/go/resources/spec/versions/1/kibana/spec.yml delete mode 100644 code/go/resources/spec/versions/1/manifest.spec.yml delete mode 100644 code/go/resources/spec/versions/1/spec.yml diff --git a/code/go/resources/spec/versions/1/changelog.spec.yml b/code/go/resources/spec/versions/1/changelog.spec.yml deleted file mode 100644 index 5e2035b9e..000000000 --- a/code/go/resources/spec/versions/1/changelog.spec.yml +++ /dev/null @@ -1,48 +0,0 @@ -## -## Describes the specification for the package's CHANGELOG file -## -spec: - # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability - type: array - items: - type: object - additionalProperties: false - properties: - version: - description: Package version. - type: string - pattern: '^[0-9]+\.[0-9]+\.[0-9]+$' - examples: - - "1.0.4" - changes: - description: List of changes in package version. - type: array - items: - type: object - additionalProperties: false - properties: - description: - description: Description of change. - type: string - examples: - - "Fix broken template" - type: - description: Type of change. - type: string - enum: - - "breaking-change" - - "bugfix" - - "enhancement" - - "known-issue" - link: - description: Link to issue or PR describing change in detail. - type: string - examples: - - "https://github.com/elastic/beats/issues/13507" - required: - - description - - type - - link - required: - - version - - changes \ No newline at end of file diff --git a/code/go/resources/spec/versions/1/changelog.yml b/code/go/resources/spec/versions/1/changelog.yml deleted file mode 100644 index ee10f053a..000000000 --- a/code/go/resources/spec/versions/1/changelog.yml +++ /dev/null @@ -1,8 +0,0 @@ -## -## This file documents changes in the package specification. It is NOT a package specification file. -## -- version: 1.0.0-alpha1 - changes: - - description: Initial version of the Elastic Package specifiction. - type: enhancement - link: https://github.com/elastic/package-spec/pulls/1 diff --git a/code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml b/code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml deleted file mode 100644 index 91aa649b2..000000000 --- a/code/go/resources/spec/versions/1/dataset/fields/fields.spec.yml +++ /dev/null @@ -1,49 +0,0 @@ -## -## Describes the specification for a dataset's various field definition files -## -spec: - # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability - type: object - additionalProperties: true - properties: - name: - description: Name of field - type: string - title: - description: Title of field - type: string - type: - description: Datatype of field - type: string - enum: - - constant_keyword - - text - - keyword - - long - - integer - - short - - byte - - double - - float - - half_float - - scaled_float - - date - - date_nanos - - boolean - - binary - - integer_range - - float_range - - long_range - - double_range - - date_range - - ip_range - - group - description: - description: Short description of field - type: string - fields: - description: Sub-fields, when type is group - $ref: "#" # JSON-schema syntax for pointing to the root of the schema - required: - - name - - type diff --git a/code/go/resources/spec/versions/1/dataset/fields/spec.yml b/code/go/resources/spec/versions/1/dataset/fields/spec.yml deleted file mode 100644 index 580180efa..000000000 --- a/code/go/resources/spec/versions/1/dataset/fields/spec.yml +++ /dev/null @@ -1,7 +0,0 @@ -spec: -- description: Fields definition - type: file - pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]\.yml' - required: true - contentMediaType: "application/x-yaml" - $ref: "./fields.spec.yml" diff --git a/code/go/resources/spec/versions/1/dataset/manifest.spec.yml b/code/go/resources/spec/versions/1/dataset/manifest.spec.yml deleted file mode 100644 index 26755f871..000000000 --- a/code/go/resources/spec/versions/1/dataset/manifest.spec.yml +++ /dev/null @@ -1,149 +0,0 @@ -## -## Describes the specification for a dataset's manifest.yml file -## -spec: - # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability - type: object - additionalProperties: false - properties: - name: - description: Name of dataset - type: string - title: - description: Title of dataset. - type: string - examples: - - AWS billing metrics - release: - description: Stability of dataset. - type: string - enum: - - experimental - - beta - examples: - - beta - type: - description: Type of dataset - type: string - enum: - - metrics - - logs - examples: - - metrics - streams: - description: Streams offered by dataset. - type: array - items: - type: object - additionalProperties: false - properties: - input: - type: string - examples: - - aws/metrics - - s3 - - file - title: - type: string - examples: - - AWS Billing metrics - description: - type: string - examples: - - Collect AWS billing metrics - template_path: - description: "Path to Elasticsearch index template for stream." - type: string - vars: - description: Input variables. - type: array - items: - type: object - additionalProperties: false - properties: - name: - description: Variable name. - type: string - examples: - - hosts - type: - description: Data type of variable. - type: string - enum: - - text - - yaml - examples: - - text - title: - description: Title of variable. - type: string - examples: - - Hosts - description: - description: Short description of variable. - type: string - examples: - - "Hosts of integration service to connect to" - multi: - description: Can variable contain multiple values? - type: boolean - default: false - examples: - - true - required: - description: Is variable required? - type: boolean - default: false - examples: - - true - show_user: - description: Should this variable be shown to the user by default? - type: boolean - default: true - examples: - - false - default: - description: Default value(s) for variable - type: array - items: - type: string - examples: - - "http://127.0.0.1" - required: - - name - - type - enabled: - description: Is stream enabled? - type: boolean - required: - - title - - description - - input - elasticsearch: - description: Elasticsearch asset definitions - type: object - additionalProperties: false - properties: - index_template: - description: Index template definition - type: object - additionalProperties: false - properties: - settings: - description: Settings section of index template - type: object - mappings: - description: Mappings section of index template - type: object - ingest_pipeline: - description: Elasticsearch ingest pipeline settings - type: object - additionalProperties: false - properties: - name: - description: Ingest pipeline name - type: string - required: - - name - required: - - title diff --git a/code/go/resources/spec/versions/1/dataset/spec.yml b/code/go/resources/spec/versions/1/dataset/spec.yml deleted file mode 100644 index faf75f90d..000000000 --- a/code/go/resources/spec/versions/1/dataset/spec.yml +++ /dev/null @@ -1,45 +0,0 @@ -spec: -- description: Folder containing a single dataset definition - type: folder - pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' - required: true - contents: - - description: A dataset's manifest file - type: file - contentMediaType: "application/x-yaml" - name: "manifest.yml" - required: true - $ref: "./manifest.spec.yml" - - description: Folder containing field definitions - type: folder - name: fields - required: true - $ref: "./fields/spec.yml" - - description: Folder containing agent-related definitions - type: folder - name: agent - required: false - contents: - - description: Folder containing agent stream definitions - type: folder - name: stream - required: true - contents: - - description: Agent stream definition - type: file - name: "stream.yml.hbs" - contentMediaType: "application/x-hbs" - required: true - - description: Folder containing Elasticsearch assets - type: folder - name: elasticsearch - contents: - - description: Folder containing Elasticsearch Ingest Node pipeline definitions - type: folder - name: ingest_pipeline - contents: - - description: Default ingest pipeline definition - type: file - name: "default.yml" - contentMediaType: "application/x-yaml" - required: true diff --git a/code/go/resources/spec/versions/1/kibana/spec.yml b/code/go/resources/spec/versions/1/kibana/spec.yml deleted file mode 100644 index 525dcab60..000000000 --- a/code/go/resources/spec/versions/1/kibana/spec.yml +++ /dev/null @@ -1,46 +0,0 @@ - spec: - - description: Folder containing Kibana dashboard assets - type: folder - name: dashboard - required: false - contents: - - description: A dashboard asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana visualization assets - type: folder - name: visualization - required: false - contents: - - description: A visualization asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana saved search assets - type: folder - name: search - required: false - contents: - - description: A saved search asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana map assets - type: folder - name: map - required: false - contents: - - description: A map asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana index pattern assets - type: folder - name: "index_pattern" - required: false - contents: - - description: An index pattern asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' diff --git a/code/go/resources/spec/versions/1/manifest.spec.yml b/code/go/resources/spec/versions/1/manifest.spec.yml deleted file mode 100644 index f0e8cddee..000000000 --- a/code/go/resources/spec/versions/1/manifest.spec.yml +++ /dev/null @@ -1,236 +0,0 @@ -## -## Describes the specification for the package's main manifest.yml file -## -spec: - # Everything under here follows JSON schema (https://json-schema.org/), written as YAML for readability - type: object - additionalProperties: false - properties: - format_version: - description: The version of the package specification format used by this package. - type: string - pattern: '^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$' - examples: - - "1.0.0" - name: - description: The name of the package. - type: string - pattern: '[a-z0-9_]+' - examples: - - apache - title: - description: The title of the package. - type: string - examples: - - Apache - description: - description: A longer description of the package. - type: string - examples: - - Apache Integration - version: - description: The version of the package. - type: string - pattern: '^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?$' - examples: - - "0.1.0" - license: - description: The license under which the package is being released. - type: string - enum: - - basic - default: basic - examples: - - basic - type: - description: The type of package. - type: string - enum: - - integration - examples: - - integration - release: - description: The stability of the package. - type: string - enum: - - experimental - - beta - - ga - examples: - - experimental - categories: - description: Categories to which this package belongs. - type: array - items: - type: string - enum: - - aws - - azure - - cloud - - config_management - - containers - - crm - - custom - - datastore - - elastic_stack - - google_cloud - - kubernetes - - languages - - message_queue - - monitoring - - network - - notification - - os_system - - productivity - - security - - support - - ticketing - - version_control - - web - examples: - - web - conditions: - description: Constraints under which this package can be installed. - type: object - additionalProperties: false - properties: - kibana: - description: Kibana versions compatible with this package. - type: object - additionalProperties: false - properties: - version: - type: string - examples: - - ">=7.9.0" - icons: - description: List of icons for by this package. - type: array - items: - type: object - additionalProperties: false - properties: - src: - description: Relative path to the icon's image file. - type: string - examples: - - "/img/logo_apache.svg" - title: - description: Title of icon. - type: string - examples: - - "Apache Logo" - size: - description: Size of the icon. - type: string - examples: - - "32x32" - type: - description: MIME type of the icon image file. - type: string - examples: - - "image/svg+xml" - required: - - src - screenshots: - description: List of screenshots of Kibana assets created by this package. - type: array - items: - type: object - additionalProperties: false - properties: - src: - description: Relative path to the scrennshot's image file. - type: string - examples: - - "/img/apache_httpd_server_status.png" - title: - description: Title of screenshot. - type: string - examples: - - "Apache HTTPD Server Status" - size: - description: Size of the screenshot. - type: string - examples: - - "1215x1199" - type: - description: MIME type of the screenshot image file. - type: string - examples: - - "image/png" - required: - - src - - title - config_templates: - description: List of configuration templates offered by this package. - type: array - items: - type: object - additionalProperties: false - properties: - name: - description: Name of configuration template. - type: string - examples: - - apache - title: - description: Title of configuration template. - type: string - examples: - - Apache logs and metrics - description: - description: Longer description of configuration template. - type: string - examples: - - Collect logs and metrics from Apache instances - inputs: - description: List of inputs supported by configuration template. - type: array - items: - type: object - additionalProperties: false - properties: - type: - description: Type of input. - type: string - title: - description: Title of input. - type: string - examples: - - Collect logs from Apache instances - description: - description: Longer description of input. - type: string - examples: - - Collecting Apache access and error logs - vars: - $ref: "./dataset/manifest.spec.yml#streams/items/properties/vars" - required: - - type - - title - - description - multiple: - type: boolean - required: - - name - - title - - description - datasets: - type: array - items: - $ref: "./dataset/manifest.spec.yml" - owner: - type: object - additionalProperties: false - properties: - github: - description: GitHub repository name of package maintainer. - type: string - required: - - format_version - - name - - title - - description - - version - - release \ No newline at end of file diff --git a/code/go/resources/spec/versions/1/spec.yml b/code/go/resources/spec/versions/1/spec.yml deleted file mode 100644 index 63a29acf4..000000000 --- a/code/go/resources/spec/versions/1/spec.yml +++ /dev/null @@ -1,33 +0,0 @@ -## -## Entrypoint of package specification. -## -## Describes the folders and files that make up a package. -## -version: 1.0.0-alpha1 -spec: -- description: The main package manifest file - type: file - contentMediaType: "application/x-yaml" - name: "manifest.yml" - required: true - $ref: "./manifest.spec.yml" -- description: The package's CHANGELOG file - type: file - contentMediaType: "application/x-yaml" - name: "changelog.yml" - required: true - $ref: "./changelog.spec.yml" -- description: Folder containing dataset definitions - type: folder - name: dataset - required: true - $ref: "./dataset/spec.yml" -- description: Folder containing documentation for the package - type: folder - name: docs - required: true -- description: Folder containing Kibana assets used by the package - type: folder - name: kibana - required: false - $ref: "./kibana/spec.yml" \ No newline at end of file From 4724bd78118a7c71109ed0c2094d7a39efe44019 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 13:35:50 -0700 Subject: [PATCH 25/46] Incorporating statik --- code/go/internal/validator/errors.go | 4 +-- code/go/internal/validator/folder.go | 54 +++++++++++++++------------- code/go/internal/validator/spec.go | 22 +++++++----- 3 files changed, 45 insertions(+), 35 deletions(-) diff --git a/code/go/internal/validator/errors.go b/code/go/internal/validator/errors.go index 29286e3d0..780e024e6 100644 --- a/code/go/internal/validator/errors.go +++ b/code/go/internal/validator/errors.go @@ -19,8 +19,8 @@ func (ve ValidationErrors) Error() string { errorWord = "error" } fmt.Fprintf(&message, "found %v validation %v:\n", len(ve), errorWord) - for _, err := range ve { - fmt.Fprintf(&message, "\t%v\n", err) + for idx, err := range ve { + fmt.Fprintf(&message, "%4d. %v\n", idx+1, err) } return message.String() diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 05f5ee96a..0038f3e71 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -3,6 +3,7 @@ package validator import ( "fmt" "io/ioutil" + "net/http" "os" "path" "path/filepath" @@ -16,6 +17,7 @@ const ItemTypeFile = "file" const ItemTypeFolder = "folder" type folderSpec struct { + fs http.FileSystem specPath string itemSpecs []folderItemSpec } @@ -31,12 +33,14 @@ type folderItemSpec struct { Contents []folderItemSpec `yaml:"contents"` } -func newFolderSpec(specPath string) (*folderSpec, error) { - if _, err := os.Stat(specPath); os.IsNotExist(err) { - return nil, errors.Wrap(err, "no folder specification file found") +func newFolderSpec(fs http.FileSystem, specPath string) (*folderSpec, error) { + specFile, err := fs.Open(specPath) + if err != nil { + return nil, errors.Wrap(err, "could not open folder specification file") } + defer specFile.Close() - data, err := ioutil.ReadFile(specPath) + data, err := ioutil.ReadAll(specFile) if err != nil { return nil, errors.Wrap(err, "could not read folder specification file") } @@ -48,15 +52,16 @@ func newFolderSpec(specPath string) (*folderSpec, error) { return nil, errors.Wrap(err, "could not parse folder specification file") } - fs := folderSpec{ + spec := folderSpec{ + fs, specPath, wrapper.Spec, } - return &fs, nil + return &spec, nil } -func (fs *folderSpec) validate(folderPath string) ValidationErrors { +func (s *folderSpec) validate(folderPath string) ValidationErrors { var errs ValidationErrors files, err := ioutil.ReadDir(folderPath) if err != nil { @@ -66,7 +71,7 @@ func (fs *folderSpec) validate(folderPath string) ValidationErrors { for _, file := range files { fileName := file.Name() - itemSpec, err := fs.findItemSpec(fileName) + itemSpec, err := s.findItemSpec(fileName) if err != nil { errs = append(errs, err) continue @@ -89,23 +94,24 @@ func (fs *folderSpec) validate(folderPath string) ValidationErrors { var subFolderSpec *folderSpec if itemSpec.Ref != "" { - subFolderSpecPath := path.Join(filepath.Dir(fs.specPath), itemSpec.Ref) - subFolderSpec, err = newFolderSpec(subFolderSpecPath) + subFolderSpecPath := path.Join(filepath.Dir(s.specPath), itemSpec.Ref) + subFolderSpec, err = newFolderSpec(s.fs, subFolderSpecPath) if err != nil { errs = append(errs, err) continue } } else if itemSpec.Contents != nil { subFolderSpec = &folderSpec{ + fs: s.fs, itemSpecs: itemSpec.Contents, - specPath: fs.specPath, + specPath: s.specPath, } } subFolderPath := path.Join(folderPath, fileName) subErrs := subFolderSpec.validate(subFolderPath) if len(subErrs) > 0 { - errs = append(errs, subErrs) + errs = append(errs, subErrs...) } } else { @@ -118,7 +124,7 @@ func (fs *folderSpec) validate(folderPath string) ValidationErrors { } // validate that required items in spec are all accounted for - for _, itemSpec := range fs.itemSpecs { + for _, itemSpec := range s.itemSpecs { if !itemSpec.Required { continue } @@ -142,8 +148,8 @@ func (fs *folderSpec) validate(folderPath string) ValidationErrors { return errs } -func (fs *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, error) { - for _, itemSpec := range fs.itemSpecs { +func (s *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, error) { + for _, itemSpec := range s.itemSpecs { if itemSpec.Name != "" && itemSpec.Name == folderItemName { return &itemSpec, nil } @@ -162,21 +168,21 @@ func (fs *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, erro return nil, nil } -func (is *folderItemSpec) matchingFileExists(files []os.FileInfo) (bool, error) { - if is.Name != "" { +func (s *folderItemSpec) matchingFileExists(files []os.FileInfo) (bool, error) { + if s.Name != "" { for _, file := range files { - if file.Name() == is.Name { - return is.isSameType(file), nil + if file.Name() == s.Name { + return s.isSameType(file), nil } } - } else if is.Pattern != "" { + } else if s.Pattern != "" { for _, file := range files { - isMatch, err := regexp.MatchString(is.Pattern, file.Name()) + isMatch, err := regexp.MatchString(s.Pattern, file.Name()) if err != nil { return false, errors.Wrap(err, "invalid folder item spec pattern") } if isMatch { - return is.isSameType(file), nil + return s.isSameType(file), nil } } } @@ -184,8 +190,8 @@ func (is *folderItemSpec) matchingFileExists(files []os.FileInfo) (bool, error) return false, nil } -func (is *folderItemSpec) isSameType(file os.FileInfo) bool { - switch is.ItemType { +func (s *folderItemSpec) isSameType(file os.FileInfo) bool { + switch s.ItemType { case ItemTypeFile: return !file.IsDir() case ItemTypeFolder: diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 593a67d27..8d7c4ecb1 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -1,34 +1,38 @@ package validator import ( - "fmt" - "os" + "net/http" "path" "strconv" "github.com/Masterminds/semver/v3" + _ "github.com/elastic/package-spec/code/go/internal/spec" "github.com/pkg/errors" + "github.com/rakyll/statik/fs" ) type Spec struct { version semver.Version + fs http.FileSystem specPath string } func NewSpec(version semver.Version) (*Spec, error) { majorVersion := strconv.FormatUint(version.Major(), 10) - specPath := path.Join("..", "..", "resources", "spec", "versions", majorVersion) - info, err := os.Stat(specPath) - if os.IsNotExist(err) { - return nil, errors.Wrapf(err, "no specification found for version [%v]", version) + + bundle, err := fs.New() + if err != nil { + return nil, errors.Wrap(err, "could not load specifications") } - if !info.IsDir() { - return nil, fmt.Errorf("no valid specification found for version [%v]", version) + specPath := "/" + majorVersion + if _, err := bundle.Open(specPath); err != nil { + return nil, errors.Wrapf(err, "could not load specification for version [%s]", version.String()) } s := Spec{ version, + bundle, specPath, } @@ -39,7 +43,7 @@ func (s Spec) ValidatePackage(pkg Package) ValidationErrors { var errs ValidationErrors rootSpecPath := path.Join(s.specPath, "spec.yml") - rootSpec, err := newFolderSpec(rootSpecPath) + rootSpec, err := newFolderSpec(s.fs, rootSpecPath) if err != nil { errs = append(errs, errors.Wrap(err, "could not read root folder spec file")) return errs From 35f009766c5032f25ae907542f5ac560f25916bc Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 14:18:03 -0700 Subject: [PATCH 26/46] Allowing for folders to have additionalContents --- code/go/internal/spec/statik.go | 2 +- code/go/internal/validator/folder.go | 59 +++++++++++------- versions/1/dataset/fields/spec.yml | 13 ++-- versions/1/dataset/spec.yml | 69 ++++++++++----------- versions/1/kibana/spec.yml | 89 ++++++++++++++-------------- versions/1/spec.yml | 54 +++++++++-------- 6 files changed, 153 insertions(+), 133 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index 2e18cdacc..c2151451f 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8eA\n\xc20\x10E\xf79\xc5'\x08]HZ\xb7\xe6\x00\xee\xdc\xb9\xd3\"!\x99\xc0@\x9a\xc6t\n\xd6\xd3K\x8a\xae\x06\x1e\xcc\xfbo)\xe4\xad2\x08\xb4\xf8\xcaEx\xce\x16\x17\xa6\x14\x16\x04\x8a\x9c\xb9!\x05\xc8V\xc8\"r\"\x05\x14'B5[twg>'s\x1e\x7f\xf79\x1e\xff\xe4\xd1oS\xea\x14P\xe9\xb5r\xa5`!um\xdf~\xceBY\xae\x14\xd8\xddv\xadv\xa5$\xf6\xaem\x0do\xb3\xb9)i\x05\x1c*E\x0b\xdd\x0fq\x0f\xea[l\xb3j\xf5\x0d\x00\x00\xff\xffPK\x07\x08\xe8.L\x93\x92\x00\x00\x00\xb7\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\x9c\x94O\x8f\xd40\x0c\xc5\xef\xfd\x14V\x854\x07\xd4\x198\x92\x1b\x12 q\x00.\xdc\xd0je\x12w\xd6R\x9a\x86\xd8\x95\x18>=\xea\x9f\xcct\xb7\x85v\xf74\x9a\xf8=\xfb'\xbf\xa4\x12\xc9\x9a\xa2\x02Gb\x13G\xe56\x18\xf8\xd4zG l\x1b\x149p8\x03\x82p8{\x02\x87\x8aB\n\x8ej\x0e\xdc\xcb\x0b\x00\xbdD2P\x0f\xae\x02 \xa2*\xa5`\xe0\xf0\x03\xab?o\xaaww\xd3\xef\xfd\xdd\xeb|r(\x00\x1a\x0e\xdf\xac\xed\x12\x05Kb\xe0m\x01\xc3H\n*\xa6\x00x\x02\xf5>\xcf>\x084\x18\xb8&Q\xa8\xd9S\x01pE\xc8\x7f\xa7>_\xc81~\x1fJ%\xc6\xe8\xd9b\xdf\xec\xf4\xbb\xba`\xe3\xcbA\x1a\xb0\xe9\xcb\xb9\xe5\xf1\x92\x0b\x89~u\x9c\xc8\x19\xd0\xd4\x8dm_%\xaa\x0d\x94\xc7\xd3U\xdd\xef/[6\xb7X3y7[\x9d\xcc\xd1\xf3\xf62\xd1 \x96M\x92Qvz\x16\x07\x9e)h\x95\xc8\xa3\xd2n\x9e\xc1\xf4/\x9cyn{\x01@4\x116\x8b\xf9+\x04\x99atLG+\x18OA\x96\x97h}\xf0$^\\\xa3\xdb\xe4r\xf4\xf4+>>\xfc\x94\xf2Z\xde\xbci\x8f\xd4\x0b\xe6\xcdU}\xf4(\xcaV\x08\x93}\x00\x14!\xfdoL4\xd7\xbf$\x9b\xc7\x03?\x87s\xff\xce\xbe\xb6\x8e r$\xcf\x81\x9e\x93\x18\x0f\xfe\xfbl\xdd\x97\xd2\x07\xaa\xb1\xf3:\x99\xd7\xe6\xee\x08\xcc\x8dMn\xef\x19\xf6\xa4u\xfb.\xc02\xae\xbf\x01\x00\x00\xff\xffPK\x07\x08\xa7\xe6\xb9\xa6z\x01\x00\x00-\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90?O\xc30\x10\xc5\xf7~\x8a\xa7,\x1d\x10e\xf7\xc6\xc2\x82\xd8\x18\x91\xd05\xbe\xd2C\xce\xd9\xf8\xdc\n\xf8\xf4(nhE\xe9\x10\"!e\xcc\xf9\xfd\xc9\xfb\x01\x96\xb8u\x0b\xe0\x1a\x9e\xad\xcd\x92\x8aDu\xb8\x8b\xc1sF\x1b\xb5\x90\xa8\xe8\x0b\xeeeMJ\xf0d\xdbu\xa4\xecAf\\l\x01\x00\xe5#\xb1\xc3\xa6z\xeaA\xa9cw\xd2\xd6[\xe6\xb7\x9dd\xf6\x0e\x1b\n\xc6\xf5\xd6\xe7\xb3\x16s\xf5\xeb\xec\x1fn\xcf\xcb\xb0\x91p\xf0\x1d+O\x87!\xea\x81\xbd\xd0c}l(\xa5 -\xf5i7\xaf\x16\xb5\x19\xa4\x89J\xe1\xac\x0e\xcb\xd5\xd5\xd3\xaa\x7fY\xfe\x81\xc0^lGA>k\xee\x08\n?\xf4SI\\(\x9d\x07\x0d\xa3={\x18Sn\xb7#`\x1c\x84S)\xfc.\x9b\x07\x84\x8e\xd2\x88\xed\x1d\xa5\xa9\xc3\x8f\x05\xf3\xd8+\xea\xf9\xfd;c\xc4\xf2\xa6\x1a\x9e\x07C3\x91\x82^\xea\xfdO _\x01\x00\x00\xff\xffPK\x07\x08\xcc\x18\xa2\x06\xf4\x00\x00\x00\x1e\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcdn\xea0\x10\x85\xf7y\x8a\x11\xb9\xd2]\x11`\x9b\xdd\xd5-\xa5R\xff6\xbc\xc0`\x8f\x93\x11\xc9\xd8\xb5\x9d\xaay\xfb*N\x00\xa1\x96\xd2J]\xc6\xfe|\xce\xe7\x89\xf3<\xcbsXK\xf4\xbd\xb3,\x11\xac\x01\x87j\x8f\x15Ap\xa4\xd8\xb0\xc2\xc8V\x8alDo((\xcf;\n\x10k\x02c\x1bM>\x00\x8a\x06\xc3MZ\xc5\x08-\xee :\x07x\xc8\x1aNC\xf6J>\xb0\x95\x12V\xc5\xb2X\xce\xb1q5\xae\xb2\xa1\xa6\xcc\xe6\xa0S\xb2\x8b\x89\xd8\xd6\x04-\xb2\x1ceZ\x146\x14b\xaa\xc9\x00b\xef\xa8<|(+\x91$>\x92f\xdc\xa6\x8d\x19:\xd7L\xea\x8b\xb7y\x8fm3\xcb\x00\x04\xdba\xf3\x10V\xf4\xe3\xb2\xa7\x97\x8e=\xe9\x12\xa2\xef\x86\xc0?\x9eL \xb3bq$\x07\xcb\x11\xff\xc4t\x92\xfc\x1b\xe0\xff\xdd\xbf\xa7\xcd\xfa\xe1y\xf3+\x9e\xaaF\xa9\xa8\xb1\xd5u\xd1\x13z\xd1\xf46\xfd\xac$\x81,,\x15h\x8c\x18(\x82&\xc3\xc2\x03\x15N\xca\x89>\xbaL\xe8\x97\x0e\x13\xb3\xf8\x89\x81U]K\x12\xd3\x00\xc0X\x9f\x9e\xd54\xcf\x8b.V\x85\x8f\"W\xbb\xeey\x87\x82\x80!P\x0c\xd0\x05\xd2\xb0\xeb\xbf\xd3\xb7O\x07\xcf\x1a\x0d6\xe1\xec\xee#s\xba\xfa{\x00\x00\x00\xff\xffPK\x07\x08\xea\xad\xacMG\x01\x00\x00Y\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xe8.L\x93\x92\x00\x00\x00\xb7\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81:\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xa7\xe6\xb9\xa6z\x01\x00\x00-\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81A\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcc\x18\xa2\x06\xf4\x00\x00\x00\x1e\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x04\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81@\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xea\xad\xacMG\x01\x00\x00Y\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81>\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\xc6\x14\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f\xc1\n\xc20\x10D\xef\xfd\x8a!\x08=HZ\xaf\xe6\x03\xbcy\xf3\xa6EB\xb2\x81\x854\x8dI\n\xd6\xaf\x97\xc4z\xda\xddax;\x93#\x19\xd5\x01f \x85B\xc9u\x97\xb0\x94M\xe2Xx \n\x17&o3,9\x0e\\\xa5\x0e\x00\xca\x16I\xc1\xb1\xa7vF]\n\xa5\xa0\xd0\xdf\xb5\xfc\x9c\xe4y\xda\xe7s:\xfe\x95\xc7\xb0\xcd\xbeo\xf6D\xaf\x95\x13Y\x85\x92\xd6\x1faOp%\xcb\xfa\xd6\xe0B\xc7\xe8\xd9\xe8\xfas|\xcbM\xcf^4\xeb!\x91S\x10\xc3\xe8Z\xb4\xa1\x96\xa8l\xd1}\x03\x00\x00\xff\xffPK\x07\x08m\xd9\xa4\xcc\x9a\x00\x00\x00\xcf\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\x9c\x94O\x8b\xdc0\x0c\xc5\xef\xfb)D(\xcc\xa1d\xa6\xd7\xe6Vh\x0b=\xb4\xa7\xde\xca\xb2\xa8\xb1\x9c\x158\x8eki\xa0\xd3O_\xe2\xfc\xdd\x8d!\x99=%\xc8\xef\xc9\xbf\xe89\x96@u\xf5\x00Pw^\xc9\xab\xf4\xef%\x18\x92:rP\xee|\x05_;g(&\x05\xb2g\xdf\x00\x82\xb0o\x1c\x81AE!\x05C\x96=\xf7\xf2\x07\x00\x00\xbd\x05\xaa\xc0&_*\x04T\xa5\xe8+8\xfd\xc2\xf2\xdf\x87\xf2\xe3\xe3\xf8|z|?UNI\x19\xe9\xcf\x95#\x99\n4^)\x95\xd6h\x1b\xb8O\x13\xc3I\xa0E\xcf\x96D\xc1\xb2\x1b\xac3\xcaR\x18\xbb}'\xc3\xf83-\x16\x18\x82\xe3\x1a\xfb\x86\x97\xbf\xe5\x0d[W\x8cb\x8fm/\x98\x1a\x9fo\xcbR\x06\x14\xe0]$[Aq\xbe\xcc\x8e~\xbe\x8bmw\xb2\x96\xc9\x99\xd58\xe5\xe5g,\x13\x9d\xd8\x92A\x0e1\x0d\xd2\xcb\x9dD\xd8\x90\xd72\x92C\xa5\xbb\xc8\x92q\x03f\xd1\xc9\xab(\xc6`\x8f\xb2\x80h$l3(Y\x98 gp\xcd\xc5\xec\xa8\xb6H\xdb\xf3\x96G\x98\xe5\x99\x13\xb70\x14\x83\xaf\x9f\xfe\xf9\xf9\xb7\x14+\xc1\xee\xb1|\xa5\xcf\xf0\xef\x8e\xef\x8bCQ\xae\x850\xd6\xcf\x80\"\xa4\xbb)\xd2\xda\xf3\xd6\xdc^n\xfc\xcd7\xfdO\xfa\xa33\x04\x81\x039\xf6to\x9a\x9cz\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(m\xd9\xa4\xcc\x9a\x00\x00\x00\xcf\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81B\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf{1\x0dv\x01\x00\x00\x90\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81I\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xea$P3\xf5\x00\x00\x00\x86\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x08\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\xde\x14\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 0038f3e71..8f5249d30 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -17,20 +17,25 @@ const ItemTypeFile = "file" const ItemTypeFolder = "folder" type folderSpec struct { - fs http.FileSystem - specPath string - itemSpecs []folderItemSpec + fs http.FileSystem + specPath string + commonSpec } type folderItemSpec struct { - Description string `yaml:"description"` - ItemType string `yaml:"type"` - ContentMediaType string `yaml:"contentMediaType"` - Name string `yaml:"name"` - Pattern string `yaml:"pattern"` - Required bool `yaml:"required"` - Ref string `yaml:"$ref"` - Contents []folderItemSpec `yaml:"contents"` + Description string `yaml:"description"` + ItemType string `yaml:"type"` + ContentMediaType string `yaml:"contentMediaType"` + Name string `yaml:"name"` + Pattern string `yaml:"pattern"` + Required bool `yaml:"required"` + Ref string `yaml:"$ref"` + commonSpec +} + +type commonSpec struct { + AdditionalContents bool `yaml:"additionalContents"` + Contents []folderItemSpec `yaml:"contents"` } func newFolderSpec(fs http.FileSystem, specPath string) (*folderSpec, error) { @@ -46,16 +51,16 @@ func newFolderSpec(fs http.FileSystem, specPath string) (*folderSpec, error) { } var wrapper struct { - Spec []folderItemSpec `yaml:",flow"` + Spec commonSpec `yaml:"spec"` } if err := yaml.Unmarshal(data, &wrapper); err != nil { return nil, errors.Wrap(err, "could not parse folder specification file") } spec := folderSpec{ - fs, - specPath, - wrapper.Spec, + fs: fs, + specPath: specPath, + commonSpec: wrapper.Spec, } return &spec, nil @@ -76,8 +81,15 @@ func (s *folderSpec) validate(folderPath string) ValidationErrors { errs = append(errs, err) continue } - if itemSpec == nil { - errs = append(errs, fmt.Errorf("filename [%s] does not match spec for folder [%s]", fileName, folderPath)) + + if itemSpec == nil && s.AdditionalContents { + // No spec found for current folder item but we do allow additional contents in folder. + continue + } + + if itemSpec == nil && !s.AdditionalContents { + // No spec found for current folder item and we do not allow additional contents in folder. + errs = append(errs, fmt.Errorf("item [%s] is not allowed in folder [%s]", fileName, folderPath)) continue } @@ -102,9 +114,12 @@ func (s *folderSpec) validate(folderPath string) ValidationErrors { } } else if itemSpec.Contents != nil { subFolderSpec = &folderSpec{ - fs: s.fs, - itemSpecs: itemSpec.Contents, - specPath: s.specPath, + fs: s.fs, + specPath: s.specPath, + commonSpec: commonSpec{ + AdditionalContents: itemSpec.AdditionalContents, + Contents: itemSpec.Contents, + }, } } @@ -124,7 +139,7 @@ func (s *folderSpec) validate(folderPath string) ValidationErrors { } // validate that required items in spec are all accounted for - for _, itemSpec := range s.itemSpecs { + for _, itemSpec := range s.Contents { if !itemSpec.Required { continue } @@ -149,7 +164,7 @@ func (s *folderSpec) validate(folderPath string) ValidationErrors { } func (s *folderSpec) findItemSpec(folderItemName string) (*folderItemSpec, error) { - for _, itemSpec := range s.itemSpecs { + for _, itemSpec := range s.Contents { if itemSpec.Name != "" && itemSpec.Name == folderItemName { return &itemSpec, nil } diff --git a/versions/1/dataset/fields/spec.yml b/versions/1/dataset/fields/spec.yml index 580180efa..0bc86b35b 100644 --- a/versions/1/dataset/fields/spec.yml +++ b/versions/1/dataset/fields/spec.yml @@ -1,7 +1,8 @@ spec: -- description: Fields definition - type: file - pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]\.yml' - required: true - contentMediaType: "application/x-yaml" - $ref: "./fields.spec.yml" + contents: + - description: Fields definition + type: file + pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]\.yml' + required: true + contentMediaType: "application/x-yaml" + $ref: "./fields.spec.yml" diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index faf75f90d..ead6bfb1b 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -1,45 +1,46 @@ spec: -- description: Folder containing a single dataset definition - type: folder - pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' - required: true contents: - - description: A dataset's manifest file - type: file - contentMediaType: "application/x-yaml" - name: "manifest.yml" - required: true - $ref: "./manifest.spec.yml" - - description: Folder containing field definitions + - description: Folder containing a single dataset definition type: folder - name: fields + pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' required: true - $ref: "./fields/spec.yml" - - description: Folder containing agent-related definitions - type: folder - name: agent - required: false contents: - - description: Folder containing agent stream definitions + - description: A dataset's manifest file + type: file + contentMediaType: "application/x-yaml" + name: "manifest.yml" + required: true + $ref: "./manifest.spec.yml" + - description: Folder containing field definitions type: folder - name: stream + name: fields required: true + $ref: "./fields/spec.yml" + - description: Folder containing agent-related definitions + type: folder + name: agent + required: false contents: - - description: Agent stream definition - type: file - name: "stream.yml.hbs" - contentMediaType: "application/x-hbs" + - description: Folder containing agent stream definitions + type: folder + name: stream required: true - - description: Folder containing Elasticsearch assets - type: folder - name: elasticsearch - contents: - - description: Folder containing Elasticsearch Ingest Node pipeline definitions + contents: + - description: Agent stream definition + type: file + name: "stream.yml.hbs" + contentMediaType: "application/x-hbs" + required: true + - description: Folder containing Elasticsearch assets type: folder - name: ingest_pipeline + name: elasticsearch contents: - - description: Default ingest pipeline definition - type: file - name: "default.yml" - contentMediaType: "application/x-yaml" - required: true + - description: Folder containing Elasticsearch Ingest Node pipeline definitions + type: folder + name: ingest_pipeline + contents: + - description: Default ingest pipeline definition + type: file + name: "default.yml" + contentMediaType: "application/x-yaml" + required: true diff --git a/versions/1/kibana/spec.yml b/versions/1/kibana/spec.yml index 525dcab60..9826f9440 100644 --- a/versions/1/kibana/spec.yml +++ b/versions/1/kibana/spec.yml @@ -1,46 +1,47 @@ spec: - - description: Folder containing Kibana dashboard assets - type: folder - name: dashboard - required: false contents: - - description: A dashboard asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana visualization assets - type: folder - name: visualization - required: false - contents: - - description: A visualization asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana saved search assets - type: folder - name: search - required: false - contents: - - description: A saved search asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana map assets - type: folder - name: map - required: false - contents: - - description: A map asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' - - description: Folder containing Kibana index pattern assets - type: folder - name: "index_pattern" - required: false - contents: - - description: An index pattern asset file - type: file - contentMediaType: "application/json" - pattern: '.+\.json' + - description: Folder containing Kibana dashboard assets + type: folder + name: dashboard + required: false + contents: + - description: A dashboard asset file + type: file + contentMediaType: "application/json" + pattern: '.+\.json' + - description: Folder containing Kibana visualization assets + type: folder + name: visualization + required: false + contents: + - description: A visualization asset file + type: file + contentMediaType: "application/json" + pattern: '.+\.json' + - description: Folder containing Kibana saved search assets + type: folder + name: search + required: false + contents: + - description: A saved search asset file + type: file + contentMediaType: "application/json" + pattern: '.+\.json' + - description: Folder containing Kibana map assets + type: folder + name: map + required: false + contents: + - description: A map asset file + type: file + contentMediaType: "application/json" + pattern: '.+\.json' + - description: Folder containing Kibana index pattern assets + type: folder + name: "index_pattern" + required: false + contents: + - description: An index pattern asset file + type: file + contentMediaType: "application/json" + pattern: '.+\.json' diff --git a/versions/1/spec.yml b/versions/1/spec.yml index 63a29acf4..a18e822f6 100644 --- a/versions/1/spec.yml +++ b/versions/1/spec.yml @@ -5,29 +5,31 @@ ## version: 1.0.0-alpha1 spec: -- description: The main package manifest file - type: file - contentMediaType: "application/x-yaml" - name: "manifest.yml" - required: true - $ref: "./manifest.spec.yml" -- description: The package's CHANGELOG file - type: file - contentMediaType: "application/x-yaml" - name: "changelog.yml" - required: true - $ref: "./changelog.spec.yml" -- description: Folder containing dataset definitions - type: folder - name: dataset - required: true - $ref: "./dataset/spec.yml" -- description: Folder containing documentation for the package - type: folder - name: docs - required: true -- description: Folder containing Kibana assets used by the package - type: folder - name: kibana - required: false - $ref: "./kibana/spec.yml" \ No newline at end of file + additionalContents: true + contents: + - description: The main package manifest file + type: file + contentMediaType: "application/x-yaml" + name: "manifest.yml" + required: true + $ref: "./manifest.spec.yml" + - description: The package's CHANGELOG file + type: file + contentMediaType: "application/x-yaml" + name: "changelog.yml" + required: true + $ref: "./changelog.spec.yml" + - description: Folder containing dataset definitions + type: folder + name: dataset + required: true + $ref: "./dataset/spec.yml" + - description: Folder containing documentation for the package + type: folder + name: docs + required: true + - description: Folder containing Kibana assets used by the package + type: folder + name: kibana + required: false + $ref: "./kibana/spec.yml" \ No newline at end of file From f3af0a320a0036c7f0f13fa8964cb91cc2515203 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 14:19:03 -0700 Subject: [PATCH 27/46] Updating specs --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/fields/spec.yml | 1 + versions/1/dataset/spec.yml | 1 + versions/1/kibana/spec.yml | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index c2151451f..055add68f 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f\xc1\n\xc20\x10D\xef\xfd\x8a!\x08=HZ\xaf\xe6\x03\xbcy\xf3\xa6EB\xb2\x81\x854\x8dI\n\xd6\xaf\x97\xc4z\xda\xddax;\x93#\x19\xd5\x01f \x85B\xc9u\x97\xb0\x94M\xe2Xx \n\x17&o3,9\x0e\\\xa5\x0e\x00\xca\x16I\xc1\xb1\xa7vF]\n\xa5\xa0\xd0\xdf\xb5\xfc\x9c\xe4y\xda\xe7s:\xfe\x95\xc7\xb0\xcd\xbeo\xf6D\xaf\x95\x13Y\x85\x92\xd6\x1faOp%\xcb\xfa\xd6\xe0B\xc7\xe8\xd9\xe8\xfas|\xcbM\xcf^4\xeb!\x91S\x10\xc3\xe8Z\xb4\xa1\x96\xa8l\xd1}\x03\x00\x00\xff\xffPK\x07\x08m\xd9\xa4\xcc\x9a\x00\x00\x00\xcf\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\x9c\x94O\x8b\xdc0\x0c\xc5\xef\xfb)D(\xcc\xa1d\xa6\xd7\xe6Vh\x0b=\xb4\xa7\xde\xca\xb2\xa8\xb1\x9c\x158\x8eki\xa0\xd3O_\xe2\xfc\xdd\x8d!\x99=%\xc8\xef\xc9\xbf\xe89\x96@u\xf5\x00Pw^\xc9\xab\xf4\xef%\x18\x92:rP\xee|\x05_;g(&\x05\xb2g\xdf\x00\x82\xb0o\x1c\x81AE!\x05C\x96=\xf7\xf2\x07\x00\x00\xbd\x05\xaa\xc0&_*\x04T\xa5\xe8+8\xfd\xc2\xf2\xdf\x87\xf2\xe3\xe3\xf8|z|?UNI\x19\xe9\xcf\x95#\x99\n4^)\x95\xd6h\x1b\xb8O\x13\xc3I\xa0E\xcf\x96D\xc1\xb2\x1b\xac3\xcaR\x18\xbb}'\xc3\xf83-\x16\x18\x82\xe3\x1a\xfb\x86\x97\xbf\xe5\x0d[W\x8cb\x8fm/\x98\x1a\x9fo\xcbR\x06\x14\xe0]$[Aq\xbe\xcc\x8e~\xbe\x8bmw\xb2\x96\xc9\x99\xd58\xe5\xe5g,\x13\x9d\xd8\x92A\x0e1\x0d\xd2\xcb\x9dD\xd8\x90\xd72\x92C\xa5\xbb\xc8\x92q\x03f\xd1\xc9\xab(\xc6`\x8f\xb2\x80h$l3(Y\x98 gp\xcd\xc5\xec\xa8\xb6H\xdb\xf3\x96G\x98\xe5\x99\x13\xb70\x14\x83\xaf\x9f\xfe\xf9\xf9\xb7\x14+\xc1\xee\xb1|\xa5\xcf\xf0\xef\x8e\xef\x8bCQ\xae\x850\xd6\xcf\x80\"\xa4\xbb)\xd2\xda\xf3\xd6\xdc^n\xfc\xcd7\xfdO\xfa\xa33\x04\x81\x039\xf6to\x9a\x9cz\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(m\xd9\xa4\xcc\x9a\x00\x00\x00\xcf\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81B\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf{1\x0dv\x01\x00\x00\x90\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81I\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xea$P3\xf5\x00\x00\x00\x86\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x08\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\xde\x14\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\x9c\x94O\x8b\xdb0\x10\xc5\xef\xf9\x14\x83)\xe4P\x9c\xf4Z\xdfJ\xff@\x0f\xed\xa9\xb7\xb2,Sk\x94\x1dP\x14U3\x81\xa6\x9f\xbeX\xb6l\xa7\x16\xd8\xd9S`\xf4\xde\xe8\x97ycI\xa0\xb6\xd9\x01\xa01\xac|\xf1\xe8>^\xbc\x92Wi\xc0\xa2\x13\xda\x01\xb4\xb9\xb2\x03\xa8\xc1\x90\xb4\x91C'n\xe0\xcb\xc5\x19\x8aI\x81\xec\xd9\x9f\x00A\xd8\x9f\x1c\x81AE!\x05C\x96}\xea\xbd\x03\x00\xd0[\xa0\x06l\xf2\xa5B@U\x8a\xbe\x81\xfdO\xac\xff\xbe\xab\xdf?\x0d\xbf\xcfOose\x9f\x94\x91~_9\x92i@\xe3\x95Ri\x8e\xb6\x80\xfb\x90\x19\xf6\x02g\xf4lI\x14,\xbb\xde:\xa2L\x85\xa1\xdb72\x8c?\xd2a\x85!8n\xb1kx\xfcS\xdf\xf0\xec\xaaA\xec\xf1\xdc r\xe3\xc3m:*\x80\x02\xbc\x89d\x1b\xa8\x0e\xc7\xd1\xd1\xcd~\xb2\xadN\xd6293\x1b\xa7\xdc\xff\x8di\xa2\x99-\x19d\x13S/=>H\x84'\xf2ZGr\xa8\xf4\x10Y2.\xc0\xf2\xbe\xc1\"\xd8\xad, \x1a \xcf\x05\x94\"L\xc6\xe9]c\xb18\xaa%\xd2r\xdf\xca\x08\xa3\xbc\xb0q\x13C\xd5\xfb\xba\xe9\x1f^~I5\x13\xac\xae\xe5\x7f\xfa\x02\xff\xea\xf8>;\x14\xe5V\x08c\xfb\x02(B\xba\x9a\"\xcd=\xaf\xcd\xed\xfe\xe2\xaf\xfe\xd4}\xa4\xdf/\x86 p \xc7\x9e\x1eM\x93S\x8f\xe7l\xdf\x9e\xdf'\xb2xu:4(\xdd\xbf1J\xd37\x9a? \xb0%\xc7\xf9\xf3\x02\xcb \xff\x05\x00\x00\xff\xffPK\x07\x08h\xca\xefv\x82\x01\x00\x00\xac\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(h\xca\xefv\x82\x01\x00\x00\xac\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81!\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81h\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81f\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\x01\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/fields/spec.yml b/versions/1/dataset/fields/spec.yml index 0bc86b35b..601f3adb8 100644 --- a/versions/1/dataset/fields/spec.yml +++ b/versions/1/dataset/fields/spec.yml @@ -1,4 +1,5 @@ spec: + additionalContents: false contents: - description: Fields definition type: file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index ead6bfb1b..6000c9cd6 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -1,4 +1,5 @@ spec: + additionalContents: false contents: - description: Folder containing a single dataset definition type: folder diff --git a/versions/1/kibana/spec.yml b/versions/1/kibana/spec.yml index 9826f9440..00f329fad 100644 --- a/versions/1/kibana/spec.yml +++ b/versions/1/kibana/spec.yml @@ -1,4 +1,5 @@ spec: + additionalContents: false contents: - description: Folder containing Kibana dashboard assets type: folder From 0abda16ba2082ac170052fdf1d7e7bbc1a1aeabc Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 15:28:01 -0700 Subject: [PATCH 28/46] Spec updates --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index 055add68f..fdb6d4ddd 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\x9c\x94O\x8b\xdb0\x10\xc5\xef\xf9\x14\x83)\xe4P\x9c\xf4Z\xdfJ\xff@\x0f\xed\xa9\xb7\xb2,Sk\x94\x1dP\x14U3\x81\xa6\x9f\xbeX\xb6l\xa7\x16\xd8\xd9S`\xf4\xde\xe8\x97ycI\xa0\xb6\xd9\x01\xa01\xac|\xf1\xe8>^\xbc\x92Wi\xc0\xa2\x13\xda\x01\xb4\xb9\xb2\x03\xa8\xc1\x90\xb4\x91C'n\xe0\xcb\xc5\x19\x8aI\x81\xec\xd9\x9f\x00A\xd8\x9f\x1c\x81AE!\x05C\x96}\xea\xbd\x03\x00\xd0[\xa0\x06l\xf2\xa5B@U\x8a\xbe\x81\xfdO\xac\xff\xbe\xab\xdf?\x0d\xbf\xcfOose\x9f\x94\x91~_9\x92i@\xe3\x95Ri\x8e\xb6\x80\xfb\x90\x19\xf6\x02g\xf4lI\x14,\xbb\xde:\xa2L\x85\xa1\xdb72\x8c?\xd2a\x85!8n\xb1kx\xfcS\xdf\xf0\xec\xaaA\xec\xf1\xdc r\xe3\xc3m:*\x80\x02\xbc\x89d\x1b\xa8\x0e\xc7\xd1\xd1\xcd~\xb2\xadN\xd6293\x1b\xa7\xdc\xff\x8di\xa2\x99-\x19d\x13S/=>H\x84'\xf2ZGr\xa8\xf4\x10Y2.\xc0\xf2\xbe\xc1\"\xd8\xad, \x1a \xcf\x05\x94\"L\xc6\xe9]c\xb18\xaa%\xd2r\xdf\xca\x08\xa3\xbc\xb0q\x13C\xd5\xfb\xba\xe9\x1f^~I5\x13\xac\xae\xe5\x7f\xfa\x02\xff\xea\xf8>;\x14\xe5V\x08c\xfb\x02(B\xba\x9a\"\xcd=\xaf\xcd\xed\xfe\xe2\xaf\xfe\xd4}\xa4\xdf/\x86 p \xc7\x9e\x1eM\x93S\x8f\xe7l\xdf\x9e\xdf'\xb2xu:4(\xdd\xbf1J\xd37\x9a? \xb0%\xc7\xf9\xf3\x02\xcb \xff\x05\x00\x00\xff\xffPK\x07\x08h\xca\xefv\x82\x01\x00\x00\xac\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(h\xca\xefv\x82\x01\x00\x00\xac\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81!\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81h\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81f\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\x01\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94O\x8f\xd30\x10\xc5\xef\xfd\x14O\x15R\x0f(-WrC\xfc\x918\xc0\x05nhU\x0d\xf1\xa4;\xc8q\x8c\xc7E\x94O\x8f\xe24M\xba\xb56\xa9\x04\xa7J\x93\xf7\xa6?\xcf<\x8dz\xae\xca\x15@\xc6H\x94\xd6\x91}\xdb\xba\xc8.j\x89\x9a\xac\xf2\n\xa8\x86\xca\n(`X\xab \xbe\x13\x97\xf8\xd0Z\xc3!)H\x9c\xb8\x03\x08*\xee`\x19\x86\")G\x18\xae\xc5\xa5\xde+\x00\x88'\xcf%\xea\xe4K\x05O1rp%6\xdf\xa8\xf8\xf3\xaax\xfdp\xfe\xdd?\xbc\x1c*\x9b\xa4\x0c\xfc\xf3(\x81M\x89\x18\x8e\x9cJ\xcfa_\x83\xdf\xa0\xbf\x19\x087\x8a\x86\x9c\xd4\xac\x11\xb5\xd8\xdez\x01\x1d\x0b\xe7n\x9f\xd8\x08}M\x1f\xd7\xe4\xbd\x95\x8a\xba\x86\xbb\xdf\xc5\x89\x1a\xbb>\x8b\x1d5\x9d`h\xbc=\x8d\x9f2\xcf\x00^\x04\xaeK\xac\xb7\xbb\x8b\xa3\xdb\xcch\x9b\x9d{-l\xcdd\xd8z\xfd\x8cq\xde\x03[2\xe8\"\xa6^\xba\xbb\x93\x88\x0e\xecb\x11\xd8R\xe4\xbb\xc8\x92\xf1\x06l\\\xeb\xdc\xda\x9f.~)+4\x06\xa6&\x83\x9a\x85\x1dp{\xd7\xa5\x98\x1d\xe5<\xf2-\xf4mb\xf3\x90\x17y&\xb3\x18\xa3\xd8\xfb\xba\xfdm\x1f\xbf\xebz\"\x98\x0d\xf6\x13}\xe6\x85\xb3\x03~oI\xa3T\xca\x14\xaaG\x90*\xc7\xd9\x1c\xf0\xd4\xf3\xbf6\x7f\x0d\xf6\xd1\x1d\xba3\xf0\xb95\x0c/\x9e\xad8\xbe7\x0f\x92z\xec\x07\xfb\xbfL\xc0;\xae\xe9h\xe3\xf9/r\x84\x0b\xc3`\xfaF\xd3\xb3\x84%I\x98\x9e8,\x8a\xc2\x17j\xbce\xf0\xaf.\xbb\xcf\x9d\xd7!\xa6I\xbfO\xfa\xed\x0fm]\xfel\xfe\x0d\x00\x00\xff\xffPK\x07\x087\xc6=\xf4\xa4\x01\x00\x00\xb8\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(7\xc6=\xf4\xa4\x01\x00\x00\xb8\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x88\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00#\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index 6000c9cd6..ac552b6be 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -5,6 +5,7 @@ spec: type: folder pattern: '[a-z0-9][a-z0-9_]+[a-z0-9]' required: true + additionalContents: false contents: - description: A dataset's manifest file type: file @@ -21,11 +22,13 @@ spec: type: folder name: agent required: false + additionalContents: false contents: - description: Folder containing agent stream definitions type: folder name: stream required: true + additionalContents: false contents: - description: Agent stream definition type: file @@ -35,13 +38,19 @@ spec: - description: Folder containing Elasticsearch assets type: folder name: elasticsearch + additionalContents: false contents: - description: Folder containing Elasticsearch Ingest Node pipeline definitions type: folder name: ingest_pipeline + additionalContents: false contents: - description: Default ingest pipeline definition type: file name: "default.yml" contentMediaType: "application/x-yaml" required: true + - description: Sample event file + type: file + name: "sample_event.json" + required: true \ No newline at end of file From 9969cb57dfdcd5f977f447fa19e9655d56da0e58 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 15:28:07 -0700 Subject: [PATCH 29/46] Fixing parsing --- code/go/internal/validator/folder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 8f5249d30..1b7915423 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -30,7 +30,7 @@ type folderItemSpec struct { Pattern string `yaml:"pattern"` Required bool `yaml:"required"` Ref string `yaml:"$ref"` - commonSpec + commonSpec `yaml:",inline"` } type commonSpec struct { From 913c573f252fe275a326d2a28b183c9212ce4037 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 6 Aug 2020 15:28:12 -0700 Subject: [PATCH 30/46] Better error message --- code/go/internal/validator/folder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 1b7915423..672b9a831 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -153,7 +153,7 @@ func (s *folderSpec) validate(folderPath string) ValidationErrors { if !fileFound { var err error if itemSpec.Name != "" { - err = fmt.Errorf("expecting to find %s matching name [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Name, folderPath) + err = fmt.Errorf("expecting to find [%s] %s in folder [%s]", itemSpec.Name, itemSpec.ItemType, folderPath) } else if itemSpec.Pattern != "" { err = fmt.Errorf("expecting to find %s matching pattern [%s] in folder [%s]", itemSpec.ItemType, itemSpec.Pattern, folderPath) } From 7741495a40da3ff61c5ab3c35bbcd61014e3f1a6 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Mon, 10 Aug 2020 12:25:50 -0700 Subject: [PATCH 31/46] Sort imports --- code/go/internal/spec_test.go | 3 ++- code/go/internal/validator/package.go | 4 +--- code/go/internal/validator/spec.go | 3 ++- code/go/internal/validator/spec_test.go | 1 - 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/code/go/internal/spec_test.go b/code/go/internal/spec_test.go index 0dfbba61b..c681b00e6 100644 --- a/code/go/internal/spec_test.go +++ b/code/go/internal/spec_test.go @@ -3,9 +3,10 @@ package internal import ( "testing" - _ "github.com/elastic/package-spec/code/go/internal/spec" "github.com/rakyll/statik/fs" "github.com/stretchr/testify/require" + + _ "github.com/elastic/package-spec/code/go/internal/spec" ) func TestBundledSpecs(t *testing.T) { diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 362619207..8fa5cf78e 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -7,10 +7,8 @@ import ( "path" "github.com/Masterminds/semver/v3" - - "gopkg.in/yaml.v3" - "github.com/pkg/errors" + "gopkg.in/yaml.v3" ) type Package struct { diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 8d7c4ecb1..93bf8883e 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -6,9 +6,10 @@ import ( "strconv" "github.com/Masterminds/semver/v3" - _ "github.com/elastic/package-spec/code/go/internal/spec" "github.com/pkg/errors" "github.com/rakyll/statik/fs" + + _ "github.com/elastic/package-spec/code/go/internal/spec" ) type Spec struct { diff --git a/code/go/internal/validator/spec_test.go b/code/go/internal/validator/spec_test.go index 323b2380f..cf660e90f 100644 --- a/code/go/internal/validator/spec_test.go +++ b/code/go/internal/validator/spec_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/Masterminds/semver/v3" - "github.com/stretchr/testify/require" ) From 11f07afc3013fc66a81701d2e64fde29de87900a Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Mon, 10 Aug 2020 12:25:56 -0700 Subject: [PATCH 32/46] Fixing const visibility --- code/go/internal/validator/folder.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/go/internal/validator/folder.go b/code/go/internal/validator/folder.go index 672b9a831..4b1e379e2 100644 --- a/code/go/internal/validator/folder.go +++ b/code/go/internal/validator/folder.go @@ -13,8 +13,8 @@ import ( "gopkg.in/yaml.v3" ) -const ItemTypeFile = "file" -const ItemTypeFolder = "folder" +const itemTypeFile = "file" +const itemTypeFolder = "folder" type folderSpec struct { fs http.FileSystem @@ -207,9 +207,9 @@ func (s *folderItemSpec) matchingFileExists(files []os.FileInfo) (bool, error) { func (s *folderItemSpec) isSameType(file os.FileInfo) bool { switch s.ItemType { - case ItemTypeFile: + case itemTypeFile: return !file.IsDir() - case ItemTypeFolder: + case itemTypeFolder: return file.IsDir() } From 569b89bfc8a2e25aece19de6e09b7c30b645fe52 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Mon, 10 Aug 2020 12:29:05 -0700 Subject: [PATCH 33/46] Add guard --- code/go/pkg/validator/validator.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/go/pkg/validator/validator.go b/code/go/pkg/validator/validator.go index bfbe68475..1d1f113c4 100644 --- a/code/go/pkg/validator/validator.go +++ b/code/go/pkg/validator/validator.go @@ -1,6 +1,8 @@ package validator import ( + "errors" + "github.com/elastic/package-spec/code/go/internal/validator" ) @@ -12,6 +14,10 @@ func ValidateFromPath(packageRootPath string) error { return err } + if pkg.SpecVersion == nil { + return errors.New("could not determine specification version for package") + } + spec, err := validator.NewSpec(*pkg.SpecVersion) if err != nil { return err From 2e23741e96bbd0b04b422e665e01fb9956bfcb81 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:39:08 -0700 Subject: [PATCH 34/46] Adding godoc comments --- code/go/internal/validator/package.go | 2 ++ code/go/internal/validator/spec.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/code/go/internal/validator/package.go b/code/go/internal/validator/package.go index 8fa5cf78e..42fd3e81f 100644 --- a/code/go/internal/validator/package.go +++ b/code/go/internal/validator/package.go @@ -11,11 +11,13 @@ import ( "gopkg.in/yaml.v3" ) +// Package represents an Elastic Package Registry package type Package struct { SpecVersion *semver.Version RootPath string } +// NewPackage creates a new Package from a path to the package's root folder func NewPackage(pkgRootPath string) (*Package, error) { info, err := os.Stat(pkgRootPath) if os.IsNotExist(err) { diff --git a/code/go/internal/validator/spec.go b/code/go/internal/validator/spec.go index 93bf8883e..ffb22bc9d 100644 --- a/code/go/internal/validator/spec.go +++ b/code/go/internal/validator/spec.go @@ -9,15 +9,18 @@ import ( "github.com/pkg/errors" "github.com/rakyll/statik/fs" + // Loads package specs as an in-memory filesystem _ "github.com/elastic/package-spec/code/go/internal/spec" ) +// Spec represents a package specification type Spec struct { version semver.Version fs http.FileSystem specPath string } +// NewSpec creates a new Spec for the given version func NewSpec(version semver.Version) (*Spec, error) { majorVersion := strconv.FormatUint(version.Major(), 10) @@ -40,6 +43,7 @@ func NewSpec(version semver.Version) (*Spec, error) { return &s, nil } +// ValidatePackage validates the given Package against the Spec func (s Spec) ValidatePackage(pkg Package) ValidationErrors { var errs ValidationErrors From ea814fc14cbeb8d39361fd1ea7c8f8df57d1f364 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:47:47 -0700 Subject: [PATCH 35/46] Fixing tests --- code/go/internal/validator/package_test.go | 5 +++-- code/go/internal/validator/spec_test.go | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/go/internal/validator/package_test.go b/code/go/internal/validator/package_test.go index cf893967b..7a0b0abb4 100644 --- a/code/go/internal/validator/package_test.go +++ b/code/go/internal/validator/package_test.go @@ -4,16 +4,17 @@ import ( "path" "testing" + "github.com/Masterminds/semver/v3" "github.com/stretchr/testify/require" ) func TestNewPackage(t *testing.T) { tests := map[string]struct { expectedErrContains string - expectedSpecVersion string + expectedSpecVersion *semver.Version }{ "good": { - expectedSpecVersion: "1.0.4", + expectedSpecVersion: semver.MustParse("1.0.4"), }, "non_existent": { expectedErrContains: "no package found at", diff --git a/code/go/internal/validator/spec_test.go b/code/go/internal/validator/spec_test.go index cf660e90f..6906b15a7 100644 --- a/code/go/internal/validator/spec_test.go +++ b/code/go/internal/validator/spec_test.go @@ -13,7 +13,7 @@ func TestNewSpec(t *testing.T) { }{ "1.0.0": {}, "9999.99.999": { - "no specification found for version [9999.99.999]", + "could not load specification for version [9999.99.999]", }, } From ac6bd539eedd1e7f7f79221cdfbbb8ca221b4eba Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:50:46 -0700 Subject: [PATCH 36/46] Making sample_event.json not required --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index fdb6d4ddd..c98b634fa 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94O\x8f\xd30\x10\xc5\xef\xfd\x14O\x15R\x0f(-WrC\xfc\x918\xc0\x05nhU\x0d\xf1\xa4;\xc8q\x8c\xc7E\x94O\x8f\xe24M\xba\xb56\xa9\x04\xa7J\x93\xf7\xa6?\xcf<\x8dz\xae\xca\x15@\xc6H\x94\xd6\x91}\xdb\xba\xc8.j\x89\x9a\xac\xf2\n\xa8\x86\xca\n(`X\xab \xbe\x13\x97\xf8\xd0Z\xc3!)H\x9c\xb8\x03\x08*\xee`\x19\x86\")G\x18\xae\xc5\xa5\xde+\x00\x88'\xcf%\xea\xe4K\x05O1rp%6\xdf\xa8\xf8\xf3\xaax\xfdp\xfe\xdd?\xbc\x1c*\x9b\xa4\x0c\xfc\xf3(\x81M\x89\x18\x8e\x9cJ\xcfa_\x83\xdf\xa0\xbf\x19\x087\x8a\x86\x9c\xd4\xac\x11\xb5\xd8\xdez\x01\x1d\x0b\xe7n\x9f\xd8\x08}M\x1f\xd7\xe4\xbd\x95\x8a\xba\x86\xbb\xdf\xc5\x89\x1a\xbb>\x8b\x1d5\x9d`h\xbc=\x8d\x9f2\xcf\x00^\x04\xaeK\xac\xb7\xbb\x8b\xa3\xdb\xcch\x9b\x9d{-l\xcdd\xd8z\xfd\x8cq\xde\x03[2\xe8\"\xa6^\xba\xbb\x93\x88\x0e\xecb\x11\xd8R\xe4\xbb\xc8\x92\xf1\x06l\\\xeb\xdc\xda\x9f.~)+4\x06\xa6&\x83\x9a\x85\x1dp{\xd7\xa5\x98\x1d\xe5<\xf2-\xf4mb\xf3\x90\x17y&\xb3\x18\xa3\xd8\xfb\xba\xfdm\x1f\xbf\xebz\"\x98\x0d\xf6\x13}\xe6\x85\xb3\x03~oI\xa3T\xca\x14\xaaG\x90*\xc7\xd9\x1c\xf0\xd4\xf3\xbf6\x7f\x0d\xf6\xd1\x1d\xba3\xf0\xb95\x0c/\x9e\xad8\xbe7\x0f\x92z\xec\x07\xfb\xbfL\xc0;\xae\xe9h\xe3\xf9/r\x84\x0b\xc3`\xfaF\xd3\xb3\x84%I\x98\x9e8,\x8a\xc2\x17j\xbce\xf0\xaf.\xbb\xcf\x9d\xd7!\xa6I\xbfO\xfa\xed\x0fm]\xfel\xfe\x0d\x00\x00\xff\xffPK\x07\x087\xc6=\xf4\xa4\x01\x00\x00\xb8\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(7\xc6=\xf4\xa4\x01\x00\x00\xb8\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x88\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00#\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd3@\x0c\x85\xf7}\x8a\xa3\n\xa9\x0b\x94\x96-\xd9!~$\x16\xb0\x81\x1d\xba\xaaL\xc6\xe95\x9aL\x86\xf1\x14Q\x9e\x1ee\xd2\xfc\xf4&\xbaI%XUr\xceq\xbf\xb1\x8f\xac\x9e\x8b|\x03\x901\x12\xa5vd\xdf\xd6.\xb2\x8b\x9a\xa3$\xab\xbc\x01\x8a\xae\xb2\x012\x18\xd6\"\x88o\xc49>\xd4\xd6pH\n\x12'\xee\x04\x82\x8a;Y\x86\xa1H\xca\x11\x86Kq\xa9\xf7\x06\x00\xe2\xc5s\x8e2\xf9R\xc1S\x8c\x1c\\\x8e\xdd7\xca\xfe\xbc\xca^?\\\x7f\x8f\x0f/\xbb\xca.)\x03\xff\xbaSs\x06>\xd7\x86\xe1\xc5\xb3\x15\xc7\xf7\xe6AR\x8fcg\xff\x97 x\xc7%\x9dm\xbc\xfe\xc5\x1c\xe1\xca0\x98\xb6\xd1\xf8,aM\x12\xc6'\x0e\xab\xa2\xf0\x85*o\x19\xfc\xab\xc9\xees\xe7\xb5\x8bi\xd2\x1f\x93~\xffCk7=\x9bih\x7f\x03\x00\x00\xff\xffPK\x07\x08(\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!((\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00%\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index ac552b6be..f05ccfe55 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -53,4 +53,4 @@ spec: - description: Sample event file type: file name: "sample_event.json" - required: true \ No newline at end of file + required: false \ No newline at end of file From b3a4829f87f015201d8cca756f55a3caf1d0bccb Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:51:16 -0700 Subject: [PATCH 37/46] Making changelog.yml not required --- code/go/internal/spec/statik.go | 2 +- versions/1/spec.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index c98b634fa..d98364618 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd3@\x0c\x85\xf7}\x8a\xa3\n\xa9\x0b\x94\x96-\xd9!~$\x16\xb0\x81\x1d\xba\xaaL\xc6\xe95\x9aL\x86\xf1\x14Q\x9e\x1ee\xd2\xfc\xf4&\xbaI%XUr\xceq\xbf\xb1\x8f\xac\x9e\x8b|\x03\x901\x12\xa5vd\xdf\xd6.\xb2\x8b\x9a\xa3$\xab\xbc\x01\x8a\xae\xb2\x012\x18\xd6\"\x88o\xc49>\xd4\xd6pH\n\x12'\xee\x04\x82\x8a;Y\x86\xa1H\xca\x11\x86Kq\xa9\xf7\x06\x00\xe2\xc5s\x8e2\xf9R\xc1S\x8c\x1c\\\x8e\xdd7\xca\xfe\xbc\xca^?\\\x7f\x8f\x0f/\xbb\xca.)\x03\xff\xbaSs\x06>\xd7\x86\xe1\xc5\xb3\x15\xc7\xf7\xe6AR\x8fcg\xff\x97 x\xc7%\x9dm\xbc\xfe\xc5\x1c\xe1\xca0\x98\xb6\xd1\xf8,aM\x12\xc6'\x0e\xab\xa2\xf0\x85*o\x19\xfc\xab\xc9\xees\xe7\xb5\x8bi\xd2\x1f\x93~\xffCk7=\x9bih\x7f\x03\x00\x00\xff\xffPK\x07\x08(\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\xc6\xef~\x8a\x0f\xc9\x80\x9d\xe2\xb4W\xdf\x86\xae\xeb\x80\xfd\xbb\xf4\x05\x18\x8b\x8a\x89\xd8\x94&\xca\xc3\xfc\xf6\x83U;)\x8a\xa2\xed\x80\x1e-\xfe\xc8\xef'\xca\xdbm\xb5\xdd\xe2Vs\x9ab\x10\xcd\x08\x1e\x91\xda\x13\x1d\x19\x16\xb9\x15/-e ZW\x0f\xe8g\xb66\xc9\x81\x0d\xb9c\xf8\xd0;N\x06R\x07/}9\xa5\x8c\x81N\x8c1\x82\xd6Ys7\xaa?\x9cL\x826\xb8\xae\xaf\xea\xab\x1d\xf5\xb1\xa3\xebj\x8ei*\x80\x9c\x939\x89\xfa\x9b\xa0\x995[\x83\x9cF\xae\x80v=\xa8\x80\x1d\\Q\x88\xb9\x8c\xba\xef\x18\x03\x89\x9e\xad\x07R\xf1l\xb9\xf8T\x00\x90\xa7\xc8\xcd\xe5s\x19\xf6\x83\x9d\xd0})m(\xc6~\xb9\xe7\xfe\xefn\xa2\xa1\xdf\x14Ti\x98\xcb\xeb\xc8zZ\x0b\x89\x7f\x8f\x92\xd8\x9d\x0d\x81\x0f\x89}\x83M\xbd?\xd3\xf3\xc5\xd6\x96g\xac\x17\xe1\x8f\x86\x9b\xaf\x9f~\xde\xdd~\xffu\xf7\x8e\xcemGz\xe4>\x1c\xdf&}\xc1_\xb0\xfeR^\xbb\xc8\x90\xa8\xe8\x11\x8e2\x19g8\xf6\xa2\xe5\xf5\xec\xb1~\xe1\x1fY-\xf8\xab6\x0b\xb7\xff?\x97\xd0\x8e\x03k.+\x81\x0f\xa9\xfc\xa1\xcb\x96_\xb4\n\xad=\xaf\xf4j\xe679\x90\x12\xc8\x8c\xb3a4v8Lo\xcd=\x95\xe6'\xc9\x9ez{\xb2\x8d\x07\xee\xb2\x8c\x7f\x01\x00\x00\xff\xffPK\x07\x08+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!((\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(+t\x98\x8bZ\x01\x00\x00\xb4\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00%\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd3@\x0c\x85\xf7}\x8a\xa3\n\xa9\x0b\x94\x96-\xd9!~$\x16\xb0\x81\x1d\xba\xaaL\xc6\xe95\x9aL\x86\xf1\x14Q\x9e\x1ee\xd2\xfc\xf4&\xbaI%XUr\xceq\xbf\xb1\x8f\xac\x9e\x8b|\x03\x901\x12\xa5vd\xdf\xd6.\xb2\x8b\x9a\xa3$\xab\xbc\x01\x8a\xae\xb2\x012\x18\xd6\"\x88o\xc49>\xd4\xd6pH\n\x12'\xee\x04\x82\x8a;Y\x86\xa1H\xca\x11\x86Kq\xa9\xf7\x06\x00\xe2\xc5s\x8e2\xf9R\xc1S\x8c\x1c\\\x8e\xdd7\xca\xfe\xbc\xca^?\\\x7f\x8f\x0f/\xbb\xca.)\x03\xff\xbaSs\x06>\xd7\x86\xe1\xc5\xb3\x15\xc7\xf7\xe6AR\x8fcg\xff\x97 x\xc7%\x9dm\xbc\xfe\xc5\x1c\xe1\xca0\x98\xb6\xd1\xf8,aM\x12\xc6'\x0e\xab\xa2\xf0\x85*o\x19\xfc\xab\xc9\xees\xe7\xb5\x8bi\xd2\x1f\x93~\xffCk7=\x9bih\x7f\x03\x00\x00\xff\xffPK\x07\x08(\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!((\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00$\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/spec.yml b/versions/1/spec.yml index a18e822f6..651513fb4 100644 --- a/versions/1/spec.yml +++ b/versions/1/spec.yml @@ -17,7 +17,7 @@ spec: type: file contentMediaType: "application/x-yaml" name: "changelog.yml" - required: true + required: false $ref: "./changelog.spec.yml" - description: Folder containing dataset definitions type: folder From 13fe68c34240e0d9af22ee4e73294e8ddc240be7 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:53:53 -0700 Subject: [PATCH 38/46] Adding docs folder to test package --- code/go/internal/validator/test/packages/good/docs/.empty | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 code/go/internal/validator/test/packages/good/docs/.empty diff --git a/code/go/internal/validator/test/packages/good/docs/.empty b/code/go/internal/validator/test/packages/good/docs/.empty new file mode 100644 index 000000000..e69de29bb From b4cfaaf5fd31ed36756ed45e05c76c06600b215a Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Thu, 13 Aug 2020 10:59:11 -0700 Subject: [PATCH 39/46] Removing need for specific agent stream definition files --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index d98364618..c09e6bf2b 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd3@\x0c\x85\xf7}\x8a\xa3\n\xa9\x0b\x94\x96-\xd9!~$\x16\xb0\x81\x1d\xba\xaaL\xc6\xe95\x9aL\x86\xf1\x14Q\x9e\x1ee\xd2\xfc\xf4&\xbaI%XUr\xceq\xbf\xb1\x8f\xac\x9e\x8b|\x03\x901\x12\xa5vd\xdf\xd6.\xb2\x8b\x9a\xa3$\xab\xbc\x01\x8a\xae\xb2\x012\x18\xd6\"\x88o\xc49>\xd4\xd6pH\n\x12'\xee\x04\x82\x8a;Y\x86\xa1H\xca\x11\x86Kq\xa9\xf7\x06\x00\xe2\xc5s\x8e2\xf9R\xc1S\x8c\x1c\\\x8e\xdd7\xca\xfe\xbc\xca^?\\\x7f\x8f\x0f/\xbb\xca.)\x03\xff\xbaSs\x06>\xd7\x86\xe1\xc5\xb3\x15\xc7\xf7\xe6AR\x8fcg\xff\x97 x\xc7%\x9dm\xbc\xfe\xc5\x1c\xe1\xca0\x98\xb6\xd1\xf8,aM\x12\xc6'\x0e\xab\xa2\xf0\x85*o\x19\xfc\xab\xc9\xees\xe7\xb5\x8bi\xd2\x1f\x93~\xffCk7=\x9bih\x7f\x03\x00\x00\xff\xffPK\x07\x08(\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!((\xf3p\x00\xa6\x01\x00\x00\xb9\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00$\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd30\x10\x85\xf7}\x8aQ\x85\xd4\x05J\xcb\x96\xec\x10?\x12\x0b\xd8\xc0\x0e]U\xa3x\\\x069\x8e\xf1L\x11\xe5\xe9Q\x9c\xbf\xf6\xc6j\x9a\xc5]U\x9a\x9c3\xfd|\xc6\x1e T\x95\x1b\x004\x86\x95\x1b\x8f\xee}\xe3\x95\xbcJ \x16\x9d\xd0\x06\xa0\x1a*\x1b\x80\x02\x0cI\x159\xb4\xe2\x12>5\xcePL\nd\xcf\xfe\x04\x08\xc2\xfe\xe4\x08\x0c*\n)\x18\xb2\xecS\xef\x0d\x00\x80^\x02\x95`\x93/\x15\x02\xaaR\xf4%\xec~`\xf1\xefM\xf1\xf6\xa9\xff=>\xbd\x1e*\xbb\xa4\x8c\xf4\xfb\xcc\x91L \x1a\xcf\x94J\xf7\xb0o\xc1g\xe8\xef\x06\xc2\x9d@\x8d\x9e-\x89\x82e\xd7YG\xd0\xa9\xd0w\xfbB\x86\xf1{\xfa\xb8\xc5\x10\x1cW\xd86<\xfc-.X\xbbm/\xf6X\xb7\x82\xa1\xf1\xfe2}\xca\x1c\x03\xe0U$[\xc2v\x7f\x18\x1d\xedd&\xdbb\xee\x96\xc9\x99\xab\xb0\xe5\xf6\x18S\xde\x03[2\xc8CL\x9d\xf4\xb0\x92\x08O\xe4\xb5\x88\xe4Pi\x15Y2\xce\xc0\xa6\xb1.\x8d\xfd\xf9\xe0\x1fe\x05\xd1HXgP\xb3\xb0\x03n\xe7\x1a\x8b\xd9(\x97\x90\x17\x01?:\x14\xe5J\x08c\xf5\x13P\x84t1G\xba\xf6\xbcTr\xb7`\x9f\xfd\xa9}F_\x1bC\x108\x90cOk\xf3\xe4\xd4\xe38\xd8\x1fL0\x07?\xc3\xff@\x16\xcfN\xfb\xbf\xc8\x11\x8e\xce\xcc\x02\x98\x10\xb7\xa6kt\xfd\xaca\xed\x8a\x80\xfcey\x86\xfc\x0d\xeb\xe0\x08\xe8O{A\xef\xad\xa7\x9eL\x92\xfe\x98\xf4\xfb_\xd2\xf8\xf9\xdaI\xa1\xfd\x0f\x00\x00\xff\xffPK\x07\x08&\xe9)\x86\x8e\x01\x00\x00\xf9\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(&\xe9)\x86\x8e\x01\x00\x00\xf9\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81-\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81t\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81r\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\x0c\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index f05ccfe55..779516d57 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -29,12 +29,6 @@ spec: name: stream required: true additionalContents: false - contents: - - description: Agent stream definition - type: file - name: "stream.yml.hbs" - contentMediaType: "application/x-hbs" - required: true - description: Folder containing Elasticsearch assets type: folder name: elasticsearch From cb8920bb0a7cd54a1468625889492c5ba6f1b829 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 11:31:16 -0700 Subject: [PATCH 40/46] Return nil when no validation errors --- code/go/pkg/validator/validator.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/go/pkg/validator/validator.go b/code/go/pkg/validator/validator.go index 1d1f113c4..0ac70fd71 100644 --- a/code/go/pkg/validator/validator.go +++ b/code/go/pkg/validator/validator.go @@ -23,5 +23,9 @@ func ValidateFromPath(packageRootPath string) error { return err } - return spec.ValidatePackage(*pkg) + if errs := spec.ValidatePackage(*pkg); errs != nil && len(errs) > 0 { + return errs + } + + return nil } From 8e7eeeb83b277e905775382915805e90e13cb397 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:13:49 -0700 Subject: [PATCH 41/46] Updating unit test --- code/go/pkg/validator/validator_test.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/go/pkg/validator/validator_test.go b/code/go/pkg/validator/validator_test.go index 73c14e235..88f73f765 100644 --- a/code/go/pkg/validator/validator_test.go +++ b/code/go/pkg/validator/validator_test.go @@ -1,7 +1,6 @@ package validator import ( - "fmt" "testing" "github.com/stretchr/testify/require" @@ -10,6 +9,5 @@ import ( func TestValidate(t *testing.T) { pkgRootPath := "../../internal/validator/test/packages/good" errs := ValidateFromPath(pkgRootPath) - require.Len(t, errs, 0) - fmt.Println(errs) + require.NoError(t, errs) } From 2435fc72bfdabd0a72bd925721e332c5daddeb42 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:15:36 -0700 Subject: [PATCH 42/46] Account for dataset test folder --- versions/1/dataset/spec.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index 779516d57..1060a7720 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -47,4 +47,8 @@ spec: - description: Sample event file type: file name: "sample_event.json" + required: false + - description: Folder containing testing related files and sub-folders + type: folder + name: "test" required: false \ No newline at end of file From ad031c015e2039e7b5b5262f71b1f18d5a85629b Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:16:43 -0700 Subject: [PATCH 43/46] Updating spec in libs --- code/go/internal/spec/statik.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index c09e6bf2b..d5bd09677 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcd\xae\xd30\x10\x85\xf7}\x8aQ\x85\xd4\x05J\xcb\x96\xec\x10?\x12\x0b\xd8\xc0\x0e]U\xa3x\\\x069\x8e\xf1L\x11\xe5\xe9Q\x9c\xbf\xf6\xc6j\x9a\xc5]U\x9a\x9c3\xfd|\xc6\x1e T\x95\x1b\x004\x86\x95\x1b\x8f\xee}\xe3\x95\xbcJ \x16\x9d\xd0\x06\xa0\x1a*\x1b\x80\x02\x0cI\x159\xb4\xe2\x12>5\xcePL\nd\xcf\xfe\x04\x08\xc2\xfe\xe4\x08\x0c*\n)\x18\xb2\xecS\xef\x0d\x00\x80^\x02\x95`\x93/\x15\x02\xaaR\xf4%\xec~`\xf1\xefM\xf1\xf6\xa9\xff=>\xbd\x1e*\xbb\xa4\x8c\xf4\xfb\xcc\x91L \x1a\xcf\x94J\xf7\xb0o\xc1g\xe8\xef\x06\xc2\x9d@\x8d\x9e-\x89\x82e\xd7YG\xd0\xa9\xd0w\xfbB\x86\xf1{\xfa\xb8\xc5\x10\x1cW\xd86<\xfc-.X\xbbm/\xf6X\xb7\x82\xa1\xf1\xfe2}\xca\x1c\x03\xe0U$[\xc2v\x7f\x18\x1d\xedd&\xdbb\xee\x96\xc9\x99\xab\xb0\xe5\xf6\x18S\xde\x03[2\xc8CL\x9d\xf4\xb0\x92\x08O\xe4\xb5\x88\xe4Pi\x15Y2\xce\xc0\xa6\xb1.\x8d\xfd\xf9\xe0\x1fe\x05\xd1HXgP\xb3\xb0\x03n\xe7\x1a\x8b\xd9(\x97\x90\x17\x01?:\x14\xe5J\x08c\xf5\x13P\x84t1G\xba\xf6\xbcTr\xb7`\x9f\xfd\xa9}F_\x1bC\x108\x90cOk\xf3\xe4\xd4\xe38\xd8\x1fL0\x07?\xc3\xff@\x16\xcfN\xfb\xbf\xc8\x11\x8e\xce\xcc\x02\x98\x10\xb7\xa6kt\xfd\xaca\xed\x8a\x80\xfcey\x86\xfc\x0d\xeb\xe0\x08\xe8O{A\xef\xad\xa7\x9eL\x92\xfe\x98\xf4\xfb_\xd2\xf8\xf9\xdaI\xa1\xfd\x0f\x00\x00\xff\xffPK\x07\x08&\xe9)\x86\x8e\x01\x00\x00\xf9\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(&\xe9)\x86\x8e\x01\x00\x00\xf9\x05\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81-\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81t\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81r\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00\x0c\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94O\x8f\xd30\x10\xc5\xef\xfd\x14\xa3\x08\xa9\x07\x94\x96+\xb9!\xfeH\x1c\xe0\x027\xb4\xaa\x86xR\x069\x8e\xf1L\x11\xe5\xd3#;I\xd3n\xcc\xa69\xec)\xd2\xe4\xbd\xc9/o\xec\x11Ou\xb5\x01@cX\xb9sh\xdfvN\xc9\xa9T\xd0\xa0\x15\xda\x00\xd4ce\x03P\x82!\xa9\x03\xfb(\xae\xe0Cg\x0d\x85\xa4@v\xec\x8e\x80 \xec\x8e\x96\xc0\xa0\xa2\x90\x82\xa1\x86]\xea\xbd\x01\x00\xd0\xb3\xa7\n\x9a\xe4K\x05\x8f\xaa\x14\\\x05\xdboX\xfe}U\xbe~\x18\x9e\x87\x87\x97ce\x9b\x94\x81~\x9d8\x90\xa9@\xc3\x89R\xe9)\xec[\xf0\x19\xfa\x9b\x91p+\xd0\xa2\xe3\x86D\xa1a\xdb[/\xa0Sa\xe8\xf6\x89\x0c\xe3\xd7\xf4\xb2@\xef-\xd7\x18\x1b\xee\xff\x94glm1\x88\x1d\xb6Q06\xde\x9d\xa7W\x99\xdf\x00x\x11\xa8\xa9\xa0\xd8\xed/\x8e8\x99\xc9\xb6\x98{\xc3d\xcdU\xd8r\xfb\x1bS\xde#[2\xc8]L\xbdt\xbf\x92\x08\x8f\xe4\xb4\x0cdQi\x15Y2\xce\xc0\xa6\xb1.\x8d\xfd\xf1\xe0\xefe\x05\xd1@\xd8fP\xb3\xb0#n\xef\xba\x14\xb3Q.!/\x02\xbe\xb7(\xca\xb5\x10\x86\xfa\x07\xa0\x08\xe9b\x8et\xedy\xae\xe4n\xc1>\xbac\xbcF\x9f;C\xe0\xd9\x93eGk\xf3\xe4\xd4\xe30\xda\xefL0\x07?\xc3\x7fG\x0d\x9e\xac\x0e\x9f\xc8\x11^\x9c\x99\x050!\x16\xa6ot}\xada\xed\x8a\x80\xfcay\x84\xfc\x05[o \xe8w<\xa0O\xad\xa7\x81L\x92\xfe\x90\xf4\xbb\x9f\xd2\xb9\xf9\xdaYq\xec\x94D\xe3s\xbc\xc5\xf1{\x02\xe8\x0c\xc8\xe9{\xd9\x8fo\xf1\x1c\x16\xb1\xcb\x7f0\xfe\x05\x00\x00\xff\xffPK\x07\x08\x06\xde\x06\x07\xa8\x01\x00\x00\x80\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\x06\xde\x06\x07\xa8\x01\x00\x00\x80\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81G\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8e\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00&\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file From a3c17b685273c0f2c3059a0f2fef2aadc6634ae8 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:17:40 -0700 Subject: [PATCH 44/46] Allowing additional ingest pipeline definition files --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index d5bd09677..838e06538 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94O\x8f\xd30\x10\xc5\xef\xfd\x14\xa3\x08\xa9\x07\x94\x96+\xb9!\xfeH\x1c\xe0\x027\xb4\xaa\x86xR\x069\x8e\xf1L\x11\xe5\xd3#;I\xd3n\xcc\xa69\xec)\xd2\xe4\xbd\xc9/o\xec\x11Ou\xb5\x01@cX\xb9sh\xdfvN\xc9\xa9T\xd0\xa0\x15\xda\x00\xd4ce\x03P\x82!\xa9\x03\xfb(\xae\xe0Cg\x0d\x85\xa4@v\xec\x8e\x80 \xec\x8e\x96\xc0\xa0\xa2\x90\x82\xa1\x86]\xea\xbd\x01\x00\xd0\xb3\xa7\n\x9a\xe4K\x05\x8f\xaa\x14\\\x05\xdboX\xfe}U\xbe~\x18\x9e\x87\x87\x97ce\x9b\x94\x81~\x9d8\x90\xa9@\xc3\x89R\xe9)\xec[\xf0\x19\xfa\x9b\x91p+\xd0\xa2\xe3\x86D\xa1a\xdb[/\xa0Sa\xe8\xf6\x89\x0c\xe3\xd7\xf4\xb2@\xef-\xd7\x18\x1b\xee\xff\x94glm1\x88\x1d\xb6Q06\xde\x9d\xa7W\x99\xdf\x00x\x11\xa8\xa9\xa0\xd8\xed/\x8e8\x99\xc9\xb6\x98{\xc3d\xcdU\xd8r\xfb\x1bS\xde#[2\xc8]L\xbdt\xbf\x92\x08\x8f\xe4\xb4\x0cdQi\x15Y2\xce\xc0\xa6\xb1.\x8d\xfd\xf1\xe0\xefe\x05\xd1@\xd8fP\xb3\xb0#n\xef\xba\x14\xb3Q.!/\x02\xbe\xb7(\xca\xb5\x10\x86\xfa\x07\xa0\x08\xe9b\x8et\xedy\xae\xe4n\xc1>\xbac\xbcF\x9f;C\xe0\xd9\x93eGk\xf3\xe4\xd4\xe30\xda\xefL0\x07?\xc3\x7fG\x0d\x9e\xac\x0e\x9f\xc8\x11^\x9c\x99\x050!\x16\xa6ot}\xada\xed\x8a\x80\xfcay\x84\xfc\x05[o \xe8w<\xa0O\xad\xa7\x81L\x92\xfe\x90\xf4\xbb\x9f\xd2\xb9\xf9\xdaYq\xec\x94D\xe3s\xbc\xc5\xf1{\x02\xe8\x0c\xc8\xe9{\xd9\x8fo\xf1\x1c\x16\xb1\xcb\x7f0\xfe\x05\x00\x00\xff\xffPK\x07\x08\x06\xde\x06\x07\xa8\x01\x00\x00\x80\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\x06\xde\x06\x07\xa8\x01\x00\x00\x80\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81G\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8e\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8c\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00&\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94M\xef\xd30\x0c\xc6\xef\xfb\x14V\x85\xb4\x03\xea\xc6\x95\xde\x10/\x12\x07\xb8\xc0\x0d\xfd5\x99\xc6\x1dFi\x1ab\x0f1>=J\xda\xac{)\xebz\xf8\x9f*\xb9\xcf\xe3\xfe\xfa8\x8ex\xaa\xab\x15\x00\x1a\xc3\xca\x9dC\xfb\xb6sJN\xa5\x82\x06\xad\xd0\n\xa0\xce\x95\x15@ \x86\xa4\x0e\xec\xa3\xb8\x82\x0f\x9d5\x14\x92\x02\xd9\xb1\xdb\x03\x82\xb0\xdb[\x02\x83\x8aB\n\x86\x1av\xa9\xf7\n\x00@\x8f\x9e*h\x92/\x15<\xaaRp\x15\xac\xbfa\xf9\xf7U\xf9\xfaix\xee\x9e^\xe6\xca:)\x03\xfd:p S\x81\x86\x03\xa5\xd2=\xecK\xf0\x1b\xf47\x99p-\xd0\xa2\xe3\x86D\xa1a\xdb[O\xa0ca\xe8\xf6\x89\x0c\xe3\xd7\xf4\xb2@\xef-\xd7\x18\x1bn\xff\x94Glm1\x88\x1d\xb6Q\x90\x1bo\x8e\xe3\xab\x89\xdf\x00x\x11\xa8\xa9\xa0\xd8lO\x8e8\x99\xd16\x9b{\xc3d\xcdY\xd8r\xf9\x1bc\xde\x99-\x19\xe4!\xa6^\xba]H\x84{rZ\x06\xb2\xa8\xb4\x88,\x19o\xc0\xc6\xb1\xce\x8d\xfdz\xf0\x8f\xb2\x82h l'P'a3n\xef:\x15'\xa3\x9cC\x9e\x05|oQ\x94k!\x0c\xf5\x0f@\x11\xd2\xd9\x1c\xe9\xdc\xf3\\\xc9]\x82}t\xfb\xb8F\x9f;C\xe0\xd9\x93eGK\xf3\xe4\xd4c\x97\xedw\x13\xbc\x88\xf8\x9a\xfd\x86\xfe\x1d5x\xb0:|a\n\xf0\xe4\x9c\xd8\xff\x91\xb00}\xa3\xf3\xad\x86\xa57\x04L\x9f\x95+\xe4/\xd8zK@\xbf\xe3\xf9\xbcw;\x0dd\x92\xf4\xbb\xa4\xdf\xfc\x94\xce\xdd\xde:\x0bN\x9d\x92h|\xe6%\x8e\xdf\x13@g@\x0e\xdf\xcb~z\xb3\xc7\xb0\x88]\xfe\x83\xf1/\x00\x00\xff\xffPK\x07\x08\xa14\x17\n\xa9\x01\x00\x00\x7f\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xa14\x17\n\xa9\x01\x00\x00\x7f\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81H\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8f\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8d\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00'\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index 1060a7720..9eb3208d8 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -37,7 +37,7 @@ spec: - description: Folder containing Elasticsearch Ingest Node pipeline definitions type: folder name: ingest_pipeline - additionalContents: false + additionalContents: true contents: - description: Default ingest pipeline definition type: file From 727b716e0f1aa18d6759e68b76ca4b89fd2313f6 Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:21:51 -0700 Subject: [PATCH 45/46] Slightly stricter check for additional ingest pipeline YAML files --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index 838e06538..99525575a 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94M\xef\xd30\x0c\xc6\xef\xfb\x14V\x85\xb4\x03\xea\xc6\x95\xde\x10/\x12\x07\xb8\xc0\x0d\xfd5\x99\xc6\x1dFi\x1ab\x0f1>=J\xda\xac{)\xebz\xf8\x9f*\xb9\xcf\xe3\xfe\xfa8\x8ex\xaa\xab\x15\x00\x1a\xc3\xca\x9dC\xfb\xb6sJN\xa5\x82\x06\xad\xd0\n\xa0\xce\x95\x15@ \x86\xa4\x0e\xec\xa3\xb8\x82\x0f\x9d5\x14\x92\x02\xd9\xb1\xdb\x03\x82\xb0\xdb[\x02\x83\x8aB\n\x86\x1av\xa9\xf7\n\x00@\x8f\x9e*h\x92/\x15<\xaaRp\x15\xac\xbfa\xf9\xf7U\xf9\xfaix\xee\x9e^\xe6\xca:)\x03\xfd:p S\x81\x86\x03\xa5\xd2=\xecK\xf0\x1b\xf47\x99p-\xd0\xa2\xe3\x86D\xa1a\xdb[O\xa0ca\xe8\xf6\x89\x0c\xe3\xd7\xf4\xb2@\xef-\xd7\x18\x1bn\xff\x94Glm1\x88\x1d\xb6Q\x90\x1bo\x8e\xe3\xab\x89\xdf\x00x\x11\xa8\xa9\xa0\xd8lO\x8e8\x99\xd16\x9b{\xc3d\xcdY\xd8r\xf9\x1bc\xde\x99-\x19\xe4!\xa6^\xba]H\x84{rZ\x06\xb2\xa8\xb4\x88,\x19o\xc0\xc6\xb1\xce\x8d\xfdz\xf0\x8f\xb2\x82h l'P'a3n\xef:\x15'\xa3\x9cC\x9e\x05|oQ\x94k!\x0c\xf5\x0f@\x11\xd2\xd9\x1c\xe9\xdc\xf3\\\xc9]\x82}t\xfb\xb8F\x9f;C\xe0\xd9\x93eGK\xf3\xe4\xd4c\x97\xedw\x13\xbc\x88\xf8\x9a\xfd\x86\xfe\x1d5x\xb0:|a\n\xf0\xe4\x9c\xd8\xff\x91\xb00}\xa3\xf3\xad\x86\xa57\x04L\x9f\x95+\xe4/\xd8zK@\xbf\xe3\xf9\xbcw;\x0dd\x92\xf4\xbb\xa4\xdf\xfc\x94\xce\xdd\xde:\x0bN\x9d\x92h|\xe6%\x8e\xdf\x13@g@\x0e\xdf\xcb~z\xb3\xc7\xb0\x88]\xfe\x83\xf1/\x00\x00\xff\xffPK\x07\x08\xa14\x17\n\xa9\x01\x00\x00\x7f\x06\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xa14\x17\n\xa9\x01\x00\x00\x7f\x06\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81H\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8f\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8d\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00'\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcf\x8e\xd3@\x0c\xc6\xef}\n+B\xeaa\x95.Wr[\xf1GBb\xb9,\x17\x04\xab\xcad\x9cb4\x99\x0cc\x07Q\x9e\x1e\xcd$i\xdam\xbai$8Er\xfcy~\xfefl\xf1T\x16+\x004\x86\x95\x1b\x87\xf6u\xe3\x94\x9cJ\x01\x15Z\xa1\x15@9DV\x009\x18\x922\xb0\x8f\xc9\x05\xbck\xac\xa1\x902\x90\x1d\xbb\x1d \x08\xbb\x9d%0\xa8(\xa4`\xa8b\x97j\xaf\x00\x00t\xef\xa9\x80*\xe9R\xc0\xa3*\x05W\xc0\xfa\x0b\xe6\x7f^\xe6\xaf\x1e\xfb\xef\xf6\xf1f\x88\xacSf\xa0\x9f-\x072\x05hh)\x85\x9e\xc3>\x05?C\xbf\x1b\x08\xd7\x025:\xaeH\x14*\xb6\x9d\xf4\x00:\x06\xfaj\xf7d\x18?\xa5\x9f\x19zo\xb9\xc4X\xf0\xf6w\xbe\xc7\xdaf}\xb2\xc3:&\x0c\x857\xfb\xf1\xd7D\x1b\x00/\x02U\x05d\x9b\xdb\x83\"\xde\xcc(\x9b\xf5\xbdb\xb2\xe6\xc8l9mc\xf4{`K\x02\xb9\x8a\xa9K\xbd]H\x84;r\x9a\x07\xb2\xa8\xb4\x88, \xcf\xc0\xc6k\x9d\xbb\xf6\xa7\x17\x7f-+\x88\x06\xc2z\x02u\x12v\xc0\xedT\x87\xe0\xa4\x95s\xc8\xb3\x80o-\x8ar)\x84\xa1\xfc\x0e(B:\xeb#\x1dk\xfe\x97s\xa7`\xef\xdd.\x8e\xd1\xc7\xc6\x10x\xf6d\xd9\xd1R?9\xd5\xd8\x0e\xf2+\x1d\x9c\x82?\xc3\x7fC\x15\xb6V\xfb#\xa6\x08\x81\x1d|\xbe\xbb\xffp\xa80\xb1\x08F\xd4\xcct\x05\x8f\xc7\x1b\x96\xae\n\xb8\xfch\x9e\xe0?\xb4\xde7A\xa3\xed\x97;\x90k[\x18\x17\xef\xe6\xe6k\xec`\xfdo:\xb8\xf8\xaa\x1f\xb0\xf6\x96\x80~\xc5Y{n\xd3\xf6\xe6J\xca\xdf\xa6\xfc\xcd\x0fi\xdc\xf9\x06]0AJ\x92\x9c\x1b\x16R\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xb9\xa9\xc8\xcb\x01\x00\x00K\x07\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81j\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xb1\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xaf\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00I\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index 9eb3208d8..b636dc25f 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -37,13 +37,18 @@ spec: - description: Folder containing Elasticsearch Ingest Node pipeline definitions type: folder name: ingest_pipeline - additionalContents: true + additionalContents: false contents: - - description: Default ingest pipeline definition + - description: Default ingest pipeline definition in YAML type: file name: "default.yml" contentMediaType: "application/x-yaml" required: true + - description: Supporting ingest pipeline definitions in YAML + type: file + pattern: '.+\.yml' + contentMediaType: "application/x-yaml" + required: false - description: Sample event file type: file name: "sample_event.json" From d6461c6c40a88077531bd22f9b25889930f2c3cb Mon Sep 17 00:00:00 2001 From: Shaunak Kashyap Date: Fri, 14 Aug 2020 12:37:13 -0700 Subject: [PATCH 46/46] Updating ingest pipeline file naming specs --- code/go/internal/spec/statik.go | 2 +- versions/1/dataset/spec.yml | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/go/internal/spec/statik.go b/code/go/internal/spec/statik.go index 99525575a..17c3ce14c 100644 --- a/code/go/internal/spec/statik.go +++ b/code/go/internal/spec/statik.go @@ -8,7 +8,7 @@ import ( func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94\xcf\x8e\xd3@\x0c\xc6\xef}\n+B\xeaa\x95.Wr[\xf1GBb\xb9,\x17\x04\xab\xcad\x9cb4\x99\x0cc\x07Q\x9e\x1e\xcd$i\xdam\xbai$8Er\xfcy~\xfefl\xf1T\x16+\x004\x86\x95\x1b\x87\xf6u\xe3\x94\x9cJ\x01\x15Z\xa1\x15@9DV\x009\x18\x922\xb0\x8f\xc9\x05\xbck\xac\xa1\x902\x90\x1d\xbb\x1d \x08\xbb\x9d%0\xa8(\xa4`\xa8b\x97j\xaf\x00\x00t\xef\xa9\x80*\xe9R\xc0\xa3*\x05W\xc0\xfa\x0b\xe6\x7f^\xe6\xaf\x1e\xfb\xef\xf6\xf1f\x88\xacSf\xa0\x9f-\x072\x05hh)\x85\x9e\xc3>\x05?C\xbf\x1b\x08\xd7\x025:\xaeH\x14*\xb6\x9d\xf4\x00:\x06\xfaj\xf7d\x18?\xa5\x9f\x19zo\xb9\xc4X\xf0\xf6w\xbe\xc7\xdaf}\xb2\xc3:&\x0c\x857\xfb\xf1\xd7D\x1b\x00/\x02U\x05d\x9b\xdb\x83\"\xde\xcc(\x9b\xf5\xbdb\xb2\xe6\xc8l9mc\xf4{`K\x02\xb9\x8a\xa9K\xbd]H\x84;r\x9a\x07\xb2\xa8\xb4\x88, \xcf\xc0\xc6k\x9d\xbb\xf6\xa7\x17\x7f-+\x88\x06\xc2z\x02u\x12v\xc0\xedT\x87\xe0\xa4\x95s\xc8\xb3\x80o-\x8ar)\x84\xa1\xfc\x0e(B:\xeb#\x1dk\xfe\x97s\xa7`\xef\xdd.\x8e\xd1\xc7\xc6\x10x\xf6d\xd9\xd1R?9\xd5\xd8\x0e\xf2+\x1d\x9c\x82?\xc3\x7fC\x15\xb6V\xfb#\xa6\x08\x81\x1d|\xbe\xbb\xffp\xa80\xb1\x08F\xd4\xcct\x05\x8f\xc7\x1b\x96\xae\n\xb8\xfch\x9e\xe0?\xb4\xde7A\xa3\xed\x97;\x90k[\x18\x17\xef\xe6\xe6k\xec`\xfdo:\xb8\xf8\xaa\x1f\xb0\xf6\x96\x80~\xc5Y{n\xd3\xf6\xe6J\xca\xdf\xa6\xfc\xcd\x0fi\xdc\xf9\x06]0AJ\x92\x9c\x1b\x16R\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xb9\xa9\xc8\xcb\x01\x00\x00K\x07\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81j\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xb1\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xaf\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00I\x15\x00\x00\x00\x00" + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8\x9cT\xdfo\x94@\x10~\xe7\xaf\x98\x1c&\xd5(\xd0F\x8d\x91\xb7\xc6\xd6\x1as\xb6\x8d\xfab\xfc\x91,0\xc0\x94ew\xdd\x1dzw\xff\xbd\x81=\xee\xb8\x1f\xad\xd1y!\xf3\xcd\xb7\xc37\xdf2\x84a\x10\x86p\x81.\xb7\x94\xa1\x03\xae\x11\x9c\xc1\x9cJ\xca\x05\x93VPj;\xa0F\xe4\x8d\xa8\xf0\xc4\xc1\xbb\x0f\xe7\xd7W\x97\xf3\x9b+(Ib\x10\x86A\x7f\"\x0d\x00B\xb8\xbcG\xbb\xe2\x9aT\x05\x9d*\xd0B\x8d\x16\xa1\xd4R\xea\x85\x83\x8f_n\xae\xc1\xe55\xb6\x02\x9e\xd6\xcc\xc6\xa5Ir\xe7\xb4\x8a<\x18k[%\xcf^\xc0\xc2\x123*\x10\x0e\xbe\x9d\x7f\x9a\x0f\x1a,\x8aBd$\x89W\x01\x00\xaf\x0c\xa6 \xac\x15}F\x8c\xad\xeb\x05\x8c\x05\x9d\xdda\xce\x03 \x8a\x82\xfaA\x84\xbc\xb5\xda\xa0eB\x97B)\xa4\xc3\xa1n\xb6\xe8\x90\x03\xdc\xa3u\xa4\xd5\x98\x02\x14\x83=\xa6\xef\x92\xc2\xad\xf7ad\xc5\x1b\x96\x7f\xb3cK\xaa\xda\x80F0\xa3U)\x9c\xfc\xfa~\x1a\xbd\xfd\xf9\xfcG\xbc\xfb|r\xb2\xe1\xe2R\xb4Fnu\x00D0;\x8bO\xe3W\xb35\x92\xd7BUS\xc2\x8e\xb299\x06]\x8e, 5^\xdaCbG\xff|L\\\x9c\x92&^\xfa\xf8\x9b\xa3>\x0e}\xf51\x95\xbcS\xd8\x9b\xe6b\x9bl\x87\x8a\xf7N\x1c\xf5\xdc\xc7\xa1\x9b>\"\x98\xbd\xa7%dV7\xa8\x80\xb15R0\xce\x82\x83\xb6\x8f\x89\xfb\xba2\xf8\x7f\xaaT\xd7\x1eQ\x94Y\x14\x0d\xa9*\xf2\x0dgG\x18]U\xd2\xf2H\x01U-T\x8e-*>Rm\x94^\xa8\x88\x9c\xeb\xf6\x9aJR\xcd\xa3#\xceI5\xc0\x1a\x86\xb3\xa0-\xdc~^\x13\xb2~\xbb\xbd\xd0\xfe\x1b+\x90\x05\xc9\x7f\xf1\xe0\xe1\x9b\x19\xff \x15q\xddeq\xae\xdb\x04\xa5pLy\x92\xa1`\x97\x0cj\\r\xf6\xf2\xf5\xe9\x9b\xe9@\x16\x7fwd\xb1\x98\xf6\x8c\xa6\x03\xed\xe0\xbd\xb8\x1d\xa0w#8\xec\x13\x8d\x8b\xb3\xce\xd6\x9b\xf5'\x00\x00\xff\xffPK\x07\x08\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x00 \x001/changelog.ymlUT\x05\x00\x01\x80Cm8l\x8f\xb1N\x031\x10D{\x7f\xc5H\xae\xcfNZ\xf7\x14i\x80\"?\xb08{\xe7U\x1c\xdb\xca\xee!\xf1\xf7(\x864\x88v5\xfbf\x9e\xf7\xce{\x9c\x8b(V\xa9\x8cK\xcf\xfb\x8d\x9b)r\xa1\xb6\xb1B\x1a\xac0\x06\xe5+m\x0c\x1d\x9ce\x95L&\xbd\x05\x9c\x0c\xa2x};\x83\xfe\x8fLlp\xde\xbb\x05\x9f|W\xe9-\xe1\x18\x0e\xe1\xb0P\x1d\x85\x8e\x0e\xcf\xaa\xe4\x80\x05\x17\xd6|\x97a3xjbB\xf5\xf9\x89\xbe\xce1/\x95\xd4$\xe3\xfdO\xe3\xdc\xe4\x00\xc0\xbe\x06'p+\xd42?\x84\xe6\xb5J\xbb&\x14\xb3\xa1)\xc6M\xac\xec\x1f!\xf7[\xe4\x1f`\xfcUX\x1e\xc08\xf6Z5\x1e\xddw\x00\x00\x00\xff\xffPK\x07\x08ms,a\xbc\x00\x00\x00$\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00 \x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8\x84T\xc1n\xd40\x10\xbd\xe7+\x9e\x1a$@\xea\xd2{nH\xe5\x82\xa0 \x95\x0b\xa7\xd5$\x9e$.^O\x18O\xba\xcd\xdf\xa38e\xb3\x8dV\xda[\xde\x9by\xe3g\x8f^\xca\xb2(K\xdcsj\xd4\xd7\x9c`=#\x0d\xdc\xf8\xd67d^\"ZQ\x10\x1c\x19%\xb6\xf7 \xcf\xa4^\xc6\x84\xd6spp\xdc\xfa\xe8\x97F\x1f8\x15eY\xcc\xfa\xaa\x00J|yf\x9d\xac\xf7\xb1\xc3\x18\x1d+zVF+!\xc81\xe1\xeb\xe3\x8f\x07\xa4\xa6\xe7\x03\xe1Co6\xa4\xea\xee\xee)I\xdc-\xe4'\xd1\xee\xee\xe3-\x8e\xea\xcd8\x82\x12~\x7f\xfe\xfe-;R&G\xb5\x0f\xde\xa6\x02\xb0i\xe0\nR?qc\x05@\xceeK\x14~\xaa\x0c\xac\xe69U0\x1d\xb9\x00\x86\x95*\x00 \xd2\x81\x97/\xc0\xe5w\x18fm\x85\x07:0\xa4].\xfa\xda\xb0\x1c\x94L}\xec2e\xde\xc2e\xf9\xaf\xb9r]\x9f\x89K\xfa{2\x9a\xabWG\x00\x1c\xc7\xc3\x7f\x0f;4\x12\x93Q\xb4\xfd\x1f\x9e\x8e\xa2\xeeT0~\xb1\x13\xd8\x16\x83\x9c\xc6\xed\xe0\xa3q\xc7z\xc2\xa9\x17]\xa5\xf5d|\x02N\xc6:\xac\xb0\x0dBkgO\xa1\xdd\xbf\xa5RC\x81\xdd\x86tt>\x91\x8c\xf7\x91\xa2\xa4\xf5D\x91\xc0\x14W\xec#\xe9\xb4\xb5\xbbW\x8a\xdd\xc6\xca\x86\x9bo\xb9\xa1\x96\x0bl\xc9\xd9\xc3[\xca\x0f\x1b\xa2S\x19\x87\x8c\xce\xf7vi\x95\x8f\xf3\xf3\x9dSWw\x9a\x8b\xe9\xf2\xb0\xb1\xde-\xe5[\x1c{\x8eY\x0c\x9f\xce\xfc\x00\xef\x94\xdb\n7\xe5MFe\x8e\xdak\xaa\x90\xa6h\xf4\x92S4\x88\x8f6\xa7\xd3$'_El\xf6\x96\xff\x02\xb9\xbb\x00\x94\xff\x8e^\xd9\xcdnv9.\xf9c>\xb6\xf8\x17\x00\x00\xff\xffPK\x07\x08W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00 \x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm84\x8f1k\xc0 \x10\x85w\x7f\xc5C\n\x19\x8aI\xd7\xba\x16\xbau\xeb\xd6\x86r\xe8 \x07\xc6X5\xd0\xf4\xd7\x17m2\x89\x8f\xef\xbe{W3;\xab\x00\xf2^\x9a\xec\x89\xe2\xcb\x9e\x1a\xa7V-\x02\xc5\xca\npw\xa2\x00\x03\xcf\xd5\x15\xc9\x1d\xb6x\x15\x8e\xbe\xc2s\x904\xe6\x15\x00\xb43\xb3E\x90\xc8\xe3\x9b\xa95.\xc9b\xfa \xf3\xfbd\x9e\xd7\xeb\xfdZ\x1f\xef\xe4s>\xb78\x0d\xbc\xf0\xf7!\x85\xbdE+\xc7\xbf\xe1j\xf0\xc6^\xe8}\xc85\xe5\x1c\xc5Q\xdf\xb9\xfc\x98\x93\xb6\xa8\x07\xfaP8X\xe8y \xa3\xda\xdc\x0f\xecn\xad\xfe\x02\x00\x00\xff\xffPK\x07\x08t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00 \x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccV_\x8f\xdb6\x0c\x7f\xcf\xa7 .\x0fk\x81%i\xb7\x87\x01y\x19\xba^\x81\xdd\xb0v\x052l\xd8\xd3A\xb1\xe9X\x85,y\"}w\xf9\xf6\x83$;\x91m9\xce\xed6\xa0|\xb2)\x8a\xe4\x8f\xe2\xbf\xe5r\xb1\\\xc2-Rf\xe5\x1e \xb8D\xa0\x1a3Y\xc8L\xb04\x1a\ncA@.X\x10\xf27\x04\x95\xd0\xb2@\xe2\xf5\xb1RPH\x85\x8b\xe5r\xe1\xael\x17\x00K\xf8\xf0\x80\xf6\xc8\xa5\xd4\x07ht\x8e\x16J\xb4\x08\x85Q\xca<\x12\xfc\xb2\xfb\xed\x13PVb%\xe0U\xc9\\\xd3v\xb3\xf9BF\xaf\x02sm\xeca\xf3\xfa[x\xb4\x92\x195\x08\x82\xbf\xde}\xfc\xd5;aQ\xe4b/\x95\xe4\xe3\x02\x80\x8f5n\xc1\xec\xbf`\xc6\x0b\x00\x91\xe7\xd2\xb9+\xd4gkj\xb4,\x91\xb6P\x08E\xb8\x00\xa8\xcf\xbc\x05\x00\x80\x16\x15\x86/\x80\xdcc\xaf\xdd\xe5-|\x12\x15\x82):\xb8\xadH\xb0El\xa5>x\x16KVi\x05\xbf\xbb\x93H\xc3zJ\x05\x00>\x89\xaaV\x9dK\x00+x\xf7\xe7\x0e\xf6R)\x17\xbc\n\xd9\xca\x8c\xfc\x99E\x85\x82\xd2\x06w\xdc\xc6\xe4J\xa3\xba\xa9\xce\x06\xf1\xa9F++\xd4,\xd4\x89\xb9G\x16\x93.\x9e\x0e\xbd\xeed\x04\x8e\xf55!\x1c\xba\x12\xe3u\xff\xca\x1ch\xd2\x8bX\x98\xd8\xa2\xa8h\"8\xfe\x0cLQ\xa0\xc5\x1c\xf6\xc7t\x88\x84\xb5\xe2\xd8r$\xe3Y\xdb(\xcf\x02]\xce\xb6@\xc3\x9ck\xb5\xeb\xba\xe1\x98\x91\x0cM\xa0!\xee@+\x10\x8f\xb4\xe9\x87\xab;\xa1\xef\x07\x0c_\x9fgF/o[\xd6s\xad\xbb$\xfd)\x91\xa4\x81\xe2\xf0\xbf\xcc\xce{\xa3\x14f\x0b.\x81\x0d|P\x82Xf\x84\xc2f%H\x9d\xe3\xd3I\x89o3!\x9f\xd67\xd7x\xff ,]0z\xe7\x1e\xdb I\xb1WH\xeb\x84\xca8\xf3\x02\x0d\xf2/\x16\x1eda\xa0kr1P:#\x03\xc5\x1d1\xa6\x1e\x9e?Z$^z\x9d\x90\x9e|\xe4@\xe9\xa7\x0e\xb4\x82\xd2\x10\xd3\xe8$\xee31\xf5\x1c\xbb\x15,\xbc\xa4k<]\xbc\xff\x8d\x83QK\x8ai\x05\x8cO\xc3\xc0\x87\x83\xa3\xa8\xd4\xb3\xa1&\xb5%\x8a3Pz\xc0\xbc\x04\xe6E\xe7~N\xbe\xc3da\x8f\x8faW\x1a\xcb1\xeb\x7f\xf5\xf7\xc6;\xecLH\xcdx\xb0am!\xb4\x0f2CW\xf2\x99\xd1\xdau\x1267#\x05U\xa3X\xce\x02z/\xf4\xc9\x7f\xa7\x8e\x85\xd4\xe1j\xad\x10\x1e\x84j\x90~\x9c\xc4\xb57F\xa1\xd0I#\x85h\x14\xa7\xcb\x15f\x91\xb3m\xc6\x97,\xfe\xddH\x8b\xf9,\xa8;:c\xea.}- \xa84\x8f\xf7\x0d\xa1\x9dE\xb1+M\xa3r\xe0RFp\xf6\xe85h\xf7\xfan\xa3u\x9a\xfc\xf0\x0f\xae\xbe\x08e\xd2\xdf9\x90\xe9\xd0t:\xe70\xde\x06\xb9\x90h\xaf\xe8\xb5\x9fS\x1d\xd8I,\xe3\xd1\x12(9`\xe2\x8b\x93ux\x19\xa5\xafE\xb7\xd3o7\x9b\xb7\xdf\xfd\xb0~\xb3~\xb3~;\xac\xb8\xa9\xec\\\xf9\x992b\xfa\x9e>\xa2H\x0c\xb5\x8bA~i\x08S;\xd2;\xd9\xfe\xeb\xa7\xdf}\xec\xe6*\xf4\xe7\xe8?\xb2\x12q\xfd\x82\xe7\xff1\xde4:E=\xd7\xfa\xbb\x88 B\xd75\x0b\xa9\xfd@\xefzpb\xf6\xcf\xcf\xfc\xd4\xac\xf7\xcb\xce}\xb7\xec\xc4!\x1bl-\xbd\x9d\xe8\xecPtab\x1f\x99\xf7\x0b.\xec!\x84\xccR\x1fF\xc9\xd5\xaf\xf7V\x08\x08\xb3n\xb4\xf4\xb7\xb8\xc1\xed\xc9\xd5\xa9\x12u=k\xeec+\xf4rsR\x1f\x90\xf8\xbe\x965*\xa9G\x83\xfeBb\x84\x9b\xd0\xdd<\xc5\xe9Z\xcb\xd7\xbe\x0b\xfc\x17;\xe2\xdd\xc0\xd9DY\xc3\xe5N3\xdb\"b\x81\xae,\xff \x00\x00\xff\xffPK\x07\x08\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00 \x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8\xb4\x94O\x8f\xd3<\x10\xc6\xef\xfd\x14\xa3j\xa5\xbe\xafVi\xb9\x92\xdb\x8a?\x12\x88]\x0e\xcb\x05\xb1K5\xc4\x93b\xe48\xc63A\x14\xf1\xe1\x91\x9d\xa4I\xdbt\x93\x08q\xaa4y\x9e\xf1o\x1e\xd7\xc3\x8e\xb2t\x01\x80Ji\xd1\xa5E\xf3\xa2\xb4BV8\x85\x1c\x0d\xd3\x02 k+\x0b\x80\x04\x14q\xe6\xb5\x0b\xe2\x14^\x97F\x91\x8f\n\xd4V\xdb\x1d \xb0\xb6;C\xa0P\x90I@Q\xaem\xec\xbd\x00\x00\x90\xbd\xa3\x14\xf2\xe8\x8b\x05\x87\"\xe4m\n\xabO\x98\xfcz\x96<\x7fl~\xb7\x8f\xd7me\x15\x95\x9e\xbeW\xda\x93JA|E\xb1\xf4\x14\xf61\xf8\x19\xfaMK\xb8b(\xd0\xea\x9cX \xd7\xa6\xb6\x1e@\xbbB\xd3\xed\x96\x94\xc6\x0f\xf1\xe3\x12\x9d3:\xc3\xd0p\xf33\xd9ca\x96\x8d\xd8b\x11\x04m\xe3\xf5\xbe\xfb40\x06\xc0\x95\xa7<\x85\xe5zsp\x84\x9b\xe9l\xa3\xb9\xe7\x9a\x8c\xea\x85\xcd\xc7cty\xb7l\xd1\xc0\x93\x98j\xe9f&\x11\xee\xc8J\xe2\xc9\xa0\xd0,\xb2h<\x03\xeb\xaeu\xec\xdaO/~*+\xb0x\xc2b\x00u\x10\xb6\xc5\xad]\x87\xe2`\x94c\xc8\xa3\x80\xaf\x0c\xb2\xe8\x8c }\xf6\x15\x90\x99d4G\xea{\xfeUr\xc7`o\xec.<\xa3\xbbR\x118\xed\xc8hKs\xf3\xd4\xb1\xc7\xb6\xb5OLp\x08\xfe\x0c\xff%\xe5X\x19i\x8e\x18\"<8\x07\x16\x00\x1cm\xab\xcf\xaan\xf6\xb0\xfeo_\x98\xdf\xdf\xb8\xb4\xff_\xadz\xd2\x0b\x7f\x84\x13\xa4\xfb\xca\xb9\xd2K\x88\xf22\x15\x83\xb6\xf0\xf1\xe6\xf6\xddt\xbc\xf5\xf5Cx\xab}\xa0Y\x0b\x0c.>\xbe\xbf\x18\xe1\xed\xfd\xfb\xbby#\x84Xg\xcc\x10\xe4c\x13\x9c\xd2c\xe1\x0c\x01\xfd\x08\x1b\xe0\xa9\xfd\xdf\xact\x8e\xfam\xd4\xaf\xfb\xe7\xcd@\x9b\x80u\xfe\xd2\x848f\xdcn\xd4\x80\xc6\x80V\x01W_\x92\xfa)\x8d\xee\x84e\xe8r\x01\xe3O\x00\x00\x00\xff\xffPK\x07\x08P\xc1\xcd\xd5\xeb\x01\x00\x00\x0c\x08\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8\xcc\x90\xbdN\xc30\x10\xc7w\x9e\xe2\x94\xa5\x03\xa2\xec\xde\x10\x12\x0bbcDB\xd7\xdc\x85\x1er\xce\xc6\xe7V\xc0\xd3\xa3\x98$\x94\xb6CP\x84\x94\xd1\xe7\xff\x97~\x00\x16\xb9v\x17\x00\x00H$Y\x82\xa2\xbf\x0d\x9aY\xb39h\xd0\x1b\x97\xdfz\xb8\x95\xd7\x15\x10[\x9d$v\x06\x07w\xc1\x13\xa7\xa2AQ\xd1\x17\xb8\x97\x0d*\x02\xa1m7\x01\x13\x01\x9aq\xb6b\x06\xc8\x1f\x91\x1d4\xc5\xd5\x9f\x14[v?\xfa\xfe\x9a\xf8m'\x89\xe9p\xc9\xf1\x96\x9357\xc7\xb5\xd0\x88\x1f\xbcc\xf9\xe1\xa9\x0f|`\x12|,\xdf\x15\xc6\xe8\xa5\xc6.\xf1\xfa\xd5\x82V\xa38b\xce\x9c\xd4\xc1j}\xf9\xb4\xee\xfeV\x7fb\xb2\x17\xdb\xa1\x97\xcf\x92=\x91\xcb/\xcf<6g\xea\x97\xc5\xc7p\xcf\x04\xc6\x98\xea\xedD<\xdf\xe2y\\Nk\x97\x85\xa5\xc58\x91F\x8bq\x1e\x8a\xb1jY\x04D\x89\xdf\x87\x94\x89,\xaabz\xeeM\xd5,.zn\xc1\xff#\xfa\n\x00\x00\xff\xffPK\x07\x08\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00 \x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8\xccXmo[\xbb\x0d\xfe\xee_A\xd8\x05\x92,\xb3\x9d\xb4\x18\x86\x18\xd8\x82\xa0-\xd6niW,\xfd\xb2\xdb\xf6\x1a\xb2L\x1f\xab\xd1\x91NE\x1e;\xce\xaf\xbf8\xef:o\x8e\x91\xa4\xb8\xd5'\x8b\xa2\xc5\x87\xd4C\x8a:\xa3\xd1`4\x827H\xd2\xa9\x05\x12\xf0\x1a\x81\"\x94j\xa5\xa4`e\x0d\xac\xacK\xa5\x91\x90\xb7\"\xc0#\x82P(\x03\xa10j\x85\xc4\x93]\xa8a\xa54\x0eF\xa3A\xf2\xcf\xd9\x00`\x04o7\xe8v\xbcV&\x80\xd8,\xd1\xc1\x1a\x1d\xc2\xcajm\xb7\x04\xff\xbe\xf9\xefG \xb9\xc6P\xc0\xf1\x9a9\xa2\xd9t\xfa\x9d\xac\x19g\xc2\x89u\xc1\xf4\xe4\xaf\xb0u\x8a\x19\x0d\x08\x82\xff_}\xb8N\xb18\x14K\xb1PZ\xf1n\x00\xc0\xbb\x08g`\x17\xdfQ\xf2\x00@,\x97*A-\xf4'g#t\xac\x90f\xb0\x12\x9ap\x00\x10U\xb2\x01\x00$\xdb\x85\x82\xe7\x1bt\xa4\xac\xc9d\x00\xcb4\x18Q\xb2\xcd\x0c>\xaf\x11\xf2u\xb0+?\x10\xed0\x85\x82!&\\\xc2b\x07\xbcVThN\xf2\x8d3\xac\xc4N\x99 \x17E\x82\x19\x9d\x99\xc1\xd1\xef\xc7_\xce\xc6\x17\xdfNO\xbeN\xda\xbf\x8e/g\xe3\xf4\xf7\xd5\xf871\xbe\x1f\x7f;=\xbe\x9c}\x9d\xd4$'\x7f99\xb9L\xc4\xa7u\xf1\xe5\x8b\xa3\xdc\x18\xde\x890\xd2\x85\xf3\x00c\x18\x9eO\xce&g\xc3tnD\x88\xbd!H\x16\x1b\xfe\x1f\xe4\xd5\x171\xbe?\x1b_\xcc\xbf\x9d\xf6\x83\x10\x91\x90kL\xa7\xacX\xf7\x83HW\x0fG\xd1\xb6tUY\xf27\xef\xb2w\x05\xda\x9a\x00\x9d/}\xbaixo\x18\x03\x972&]z\x1c\xf5\x0e\n\xfd\x9fC\xa8\xb3\xc9yA(\xad$\x1a\xea?\xce|=\xaf\x0f\xdb\xb5\x92\xebZ~)\x82\x05&\x05\xc4\xa1FA\xb8\xdc\x17p\x13\x87\x15\x8a\x85 %K\xb3+\x11k\x9e\xd5\x84m\xe0\xd5j\xba{/\x05wQ\xca\xc0\x87\x0f\xa2\x8eH5\xce\xbd\x0bBS'w\xbb\x17\x0bq^\x06\x0fgG\x1d\x14\xdeE\xe8T\x88\x86\x85\xae\x02\x81,\xcaI z\xd1\xb6\xfe,\x05c`\x9d\xaa\x94j\x88_\x97\xcb\xc0\xb6<\xed\xaaH\xc2\x02\x93\x8c\xa3:z\xe1\x9c\xd8\xe5\x12\xc5\x18\x96{w\xbaWw0\xad-[\xf2g\xf7\xb1Co.\xb5\x8d\x97\xfe\xdc\x9a\x95\n\xe6\xa10\"\xc0\xc4\xb5\xfa\x1a\x0be\xd0\xf9\x1bJ\x17\xfa\xb3\x98\xd8\xfa\x82\xa5`Alk6Q\x0bb%\xe7\xc4B\xdez\xf2\xc0\xda@\xe3\xbc \xe96^\xa03\xc8\xe8\x9b\xd5\xc2\x04\xb1\x08j\xb2\x10\x89D\x80\xf3\x1f1\xc6\xbe\xbd\xd0\x1a\xc5\xb6\x16\xa41\x18\xe4\xadu\xbeyc\xb9\xbc\xcb<\xb1\xa59\xed\x88\xd1\xf7*rv\x19KV\x9b\xec\x06.\xc4\x842v\x0dQ\x1cE\xd6\xf9Qd%o\x91\xeb`\xf2\x1a7O\"\xec\xac\xf6V\xb6\xb8\xa8N\xb6\xc1@\x7f]Z\x93]\xfb=\xd4\xb3\x86\xd8 e\x98\x1a\xc5\xc6\xa3\x9f\x14\x06\x16\x08\xca\x10\x0b\xad\x9b\xc5\xa6l0\x92\xb1\xa7\xc9\xc8\x14r\xbdf\xbb\x91\x8c[\xb5\x10FT\xf3\x06\xd4\xff\xa4\xcbEH\x08\xa4\x0d#\xc1j\xa1\x11\xb6\x8a\xd7\x9dmE\x0f\xca\x07\x90zZ]8\xa1}9\x15\xa33\xf1\xb2\xd1>\xa4l\x8ca\xf8\xcf\x7f\xfc}rQ\\\x0dJ\xf6\x9d\xd5\xb5\"N\xeaY\xaa\x91\xf6{{\x9b\xa9\x07\xebC#$\x87\x04\xa4;\x1c\xe4d\xdd\xab\x1a\xec\xff\xa1\x16\xac6I\x0dNN\xc9\xa6\xf58\xf1\xe1\x88@\x85 \xbf\x92\x16yR\xdb\xa07\x8e\xddQ\x1c\xc3p\xaa\xc2`\xaam`\xe7Y\xcf4\xa1M0\xf4Y\xe0\xb7O\xd9\xa8\xdf\x1aE\x03\x95 {*\x98\xbc\xa3\xb9\xb6\x81\xf51\x90\xba\xdf\x07\xe1F\xdd\x97-\xdcs\xa0x\xf5\xf2\xee\xd5\xcba3\x13\xfa\xed\x7fx\xff\xe1my\x8b\x17 \x9e\xf1\x88\xd2\x9d\xa6\xb4 N\xefB]\xe1r\xf8#V\x0e\x97~\xf5\"\x975\x1c$\x1d\xa2\xa1\xb5\xe5\xfd)\xe1\xe9%\xd3\xbcT\x08\"d\x02\xe9P\xf0CO\x8f_:[\x12\xf7L\xea\xde\xf3\xe7L\x96.\xf3\xe4\xa5\xb9\x9c\x13\xba\x0d\xba\xe4\x02\xe6\x98&\x91y\\\nU\xa7\xf1T\x84y\"\xbd\xfb\xfc\xf9\xd3\x1b\xb8I\xc1\xc1M\n\xee\x91y\xf5|\xd0\xce_\x9e\xff\xed\xee\xfc\xfc\xe2\xe2)\x19V\xc1y\xc6c\xcd\xf2\xacvx\xfbr\x0c\xf2\xee\x83u\xc6\xdc\xbc\xd3c\x0c#-\xb8\xa7e-\x12/S\x8e\xb3\xd6\x1c\xca\xff\x80]\xad\xd0\xfd:9\xe7?\xe0\xb3Q\xf3\xe6c\xfe\x84\xef\xf6\xe6\x89\xe7\xe1\xbd\xe1\xf3\x1d\x0e\xcd\xa3\x9f\x02'O)m\x03\x02a\x96\x10\";%\xc9\xd3\xeax\xff\xb7\x17\xe0\xba\xf3\x1b\xc0O\x81\xfc\xdaj\x8d\x92[\x98a\xe5lX8\x94v\xa7F\xa2\xef\x892Q\xcc\xb4\xcf\x89\xa2\xa5J\x15\x8b\xa6<\xe3\xed\xe1\xae\xf8<\xce\x0d\xd7\xd9\xec+\xb7\x1aQ8\x90\xd9\xd9\xe8kH\xa1\xb3\xfad\xa3\xce\xae\xbc\xfc\xa4.O:\xb4\xf7\xf4\xb0\x9d\xdc\xcdFO3\xf5(#\xfd\xcd2\xb4\xf9\xf0\x10\x07\xb2\xd1\xcb\xe9\xf6r\x0f\xb3\x9f\xec\n\xec\xf3E\x99\xa0pBH\x89\x94\xf1\x1c\x9d\xb3.u\xb3\xf5\xdf\x8dp\x9d\xd1y\xe1p5\x83\xe1d\x9a>\xb0\x91\xa7\xe5\xc7h\x8aPNv\xa1\x1e\x11;\x14!MS\x92N+BM\x93=\x87\x8d=\xdb7G6\xc6\xa9\xdfmay\x8d\xf8R/\x94\xdeZ\x18kVQ\x93NY8\x17\xd6j\x14\x95v\xd7\x05\x96\x14uoZ7\xdd6\x9a\x07\xa4\x8c\xda\x83w\xd0\xc3\xa1\x1cfgj\xb7\x06]}\xdbC\x1f\xc5\xb9FWV\x07\x8a\xd7\xf1\xc2\x0fN\x8d\xa5\xffR\xfc.^\x80\xc3\xc8\x92b\xebv\xe5\x87\xe8\xe2\xd9\x1e&\xcf\xfa\xf4\xbbL\xfb9\\\xd2\xd5\x0f\xec\xb8\xf1\xd5\x7f\xe0E\xb9\x8ao3\xb2\xe5W\x8a\xf4w\xfee\xee\x8f\x00\x00\x00\xff\xffPK\x07\x08\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x001/spec.ymlUT\x05\x00\x01\x80Cm8\xac\x92\xcfn\xdb0\x0c\x87\xef~\x8a\x1f\x92\x01;\xc5i\xaf\xbe\x0d]\xd7\x01\xfbw\xe9\x0b0\x16\x95\x10\xb1)M\x94\x87\xf9\xed\x07\xabvR\x0cA\xb2\x01=Z\xfcH~$\xbd^W\xeb5\x1e5\xa71\x06\xd1\x8c\xe0\x11\xa9=\xd2\x9ea\x91[\xf1\xd2R\x96\xa0u\xf5\x82~dk\x93\xec\xd8\x90\x0f\x0c\x1f:\xc7\xc9@\xea\xe0\xa5+\xaf\x94\xd1\xd3\x911D\xd0Rk\xcaF\xf5\x8b\x93I\xd0\x06\xf7\xf5]}\xb7\xa1.\x1e\xe8\xbe\x9a\xda4\x15@\xce\xc9\xd4\x89\xba\x87\xa0\x995[\x83\x9c\x06\xae\x80vy\xa8\x80\x0d\\Q\x88\xb9\x94z>0z\x12=Y\xf7\xa4\xe2\xd9r\xf1\xa9\x00 \x8f\x91\x9b\xf3\xe7\\\xec\x1b;\xa1\xe7\x12ZQ\x8c\xdd<\xe7\xf6\xf7f\xa4\xbe[\x15T\xa9\x9f\xc2K\xc9z\\\x02\x89\x7f\x0e\x92\xd8\x9d\x0c\x81w\x89}\x83U\xbd=\xd1\xd3`K\xca\x05\xebY\xf8\xbd\xe1\xe1\xf3\x87\xefO\x8f_\x7f<\xbd\xa1s{ \xdds\x17\xf6\x97\xa4=u\xf6\x97\xf5\x99\xbf\xa2\xfd\xa9\x9c\xbb\xd8\x90\xa8\xe8\x1e\x8e2\x19g8\xf6\xa2\xe5|\xf6\xda\xbf\xf0\xaf\xb4f\xfc\xe6\x0egn\xfb\x7f.\xa1\x1dz\xd6\\v\x02\x1fR\xf9E\xe75_\xb5\n\xad]V\xba\xd9\xf3\x8b\xecH d\xc6\xd90\x18;\xec\xc6\x7f\xed{,\xc9\xb7o\xf3\xc2\x9d\x97\xf1'\x00\x00\xff\xffPK\x07\x08\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xeeO\xccS\xf8\x01\x00\x005\x05\x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x001/changelog.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(ms,a\xbc\x00\x00\x00$\x01\x00\x00\x0f\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81C\x02\x00\x001/changelog.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(W\xf9\xc8\xba\xbc\x01\x00\x00?\x04\x00\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81E\x03\x00\x001/dataset/fields/fields.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(t\xa7P\x0f\xa7\x00\x00\x00\xeb\x00\x00\x00\x19\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81X\x05\x00\x001/dataset/fields/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xb9\xb2H\x06\xb5\x03\x00\x00\xc8\x10\x00\x00\x1b\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81O\x06\x00\x001/dataset/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(P\xc1\xcd\xd5\xeb\x01\x00\x00\x0c\x08\x00\x00\x12\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81V\n\x00\x001/dataset/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xed\xdd\xda\xfb\xff\x00\x00\x00\xa4\x05\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x8a\x0c\x00\x001/kibana/spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcd\xa79J\xb4\x05\x00\x00<\x19\x00\x00\x13\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd1\x0d\x00\x001/manifest.spec.ymlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xcf\x08b\xadY\x01\x00\x00\xb5\x03\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xcf\x13\x00\x001/spec.ymlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00 \x00 \x00\xa6\x02\x00\x00i\x15\x00\x00\x00\x00" fs.Register(data) } \ No newline at end of file diff --git a/versions/1/dataset/spec.yml b/versions/1/dataset/spec.yml index b636dc25f..64c4059ae 100644 --- a/versions/1/dataset/spec.yml +++ b/versions/1/dataset/spec.yml @@ -39,19 +39,24 @@ spec: name: ingest_pipeline additionalContents: false contents: - - description: Default ingest pipeline definition in YAML + - description: Default ingest pipeline definition type: file - name: "default.yml" - contentMediaType: "application/x-yaml" + pattern: '^default\.(yml|json)$' required: true - description: Supporting ingest pipeline definitions in YAML type: file pattern: '.+\.yml' contentMediaType: "application/x-yaml" required: false + - description: Supporting ingest pipeline definitions in JSON + type: file + pattern: '.+\.json' + contentMediaType: "application/json" + required: false - description: Sample event file type: file name: "sample_event.json" + contentMediaType: "application/json" required: false - description: Folder containing testing related files and sub-folders type: folder